C++ C++ ohne .NET

xtrars

Ensign
Registriert
Juni 2010
Beiträge
148
Hallo!
Ich habe für jemanden ein Programm geschrieben und wollte es ihm geben. Ich habe getestet ob es funktioniert. Allerdings bringt es wenn kein .NET installiert ist folgende Fehlermeldung:

Um diese Anwendung ausführen zu können, müssen sie zunächst eine der folgenden Versionen von .NET Framework installieren: v4.0.30319. Usw......

Was muss man bei den Projekteigenschaften einstellen das es auch ohne dieses .NET geht?
(Ich benutze Visual Studio 2010)

Danke für sinnvolle Hilfe!
 
Es ist als C++ wohl eher von der Microsoft Visual C++ Runtime Library (MSVCRT) abhängig als von .NET. Obwohl MSVCRT eine Untermenge von den .NET-Redistributables ist, existieren jedoch auch eigenständige MSVCRT-Redistributionen: die VC6/VC8/VC9-Redistributables.
 
Blitzmerker schrieb:
C++->Codegenerierung->Laufzeitbibliothek->Multithreaded (/MT)
(So ists in VS 2008, ich glaub nicht, dass sich das unter VS2010 geändert hat)

Was hat den Multithreading damit zu tun das .Net4.0 nicht installiert ist?

@raudy1992
.Net4.0 kannst bei deinem bekanntem nicht installieren? Oder falls du keine Funktionen von .Net4.0 nutzt, kannst auch in den BuildOptionen einstellen für welche Version des .Net Framework das ganze sein soll...
Hab aber grade selber VS nicht installiert, sonst könnt ichs dir genau sagen wo es ist und wie es heisst...

@XunnD
Für C++ Anwendungen die das .Net Framework verwenden, wird allerdings auch .Net benötigt, wenn ich jetzt nicht ganz falsch liege^^
 
Zuletzt bearbeitet:
@Blitzmerker
Achso ok, das Multithreaded ohne den Bezug auf DLL hat mich grade leicht verweirrt^^
sorry....(Hab jetzt auch schon länger nichts mehr mit .Net gemacht)
 
@ Fonce Ich kann es schon installieren aber da es nicht standartmäßig auf allen Rechnern drauf ist möchte ich es nicht. Man soll die .exe auch ohne Zusatz starten könne
Ergänzung ()

@ blitzmerker geht nicht. Will dann das Programm nicht mehr debuggen
 
Zuletzt bearbeitet: (Betreff vergessen)
Und BTW wer will bei einem fertigen Programm was debuggen?
Sich anzumaßen, dass sein Programm bei Release "fertig" und damit fehlerfrei sei, ist sehr sehr gefährlich.

Obwohl es Gründe GEGEN ein Debug-Build on Release gibt, so gibt es definitiv auch Gründe dafür. Gerade bei größeren Software-Produkten.
 
raudy1992: Hast du .Net Framework Klassen in deinem Programm verwendet? Wenn ja, dann wirst du es nicht so ohne entsprechendes Umschreiben in eine Standalone Anwendung kompilieren können. Benötigt wird immer das .Net Framework bei einem CLR Projekt, da die Anwendung keinen bzw. nur sehr wenig ausführbaren Code enthält und der große Rest in der .Net Framework spezifischen Common Intermediate Language kurz CIL kompiliert wurde. Dieser CIL Code wird dann von .Net Framework in nativen Code just in time kompiliert und ausgeführt. Die Entscheidung ob nun ein C++ Programm als .Net Framework Anwendung oder native Anwendung kompiliert werden soll, triffst du normalerweise ganz zu Anfang bei der Festlegung des Projekttyps. Ob es dann später auch möglich ist den Typ zu wechseln, kann ich dir nicht sagen. Ggfs. könntest du jedoch ein neues Projekt erzeugen, z.B. Win32 Projekt (nativ) statt CLR Projekt (.Net Framework) und dann einfach die Code-Dateien da reinkopieren. Danach evtl. noch die Projekteigenschaften gem. deinen Wünschen konfigurieren und versuchen neu zu kompilieren. Wenn du keine .Net Framework spezifischen Klassen / Typen, was auch immer, verwendet hast, dann sollte es klappen.

Sehe gerade in den Projekteigenschaften bei mir unter Konfigurationseigenschaften/Allgemein die Option "Common Language Runtime". Die solltest du auf "Keine Common Language Runtime-Unterstützung" einstellen. Damit sollte das .Net Framework erstmal aussen vor sein.

Viel Erfolg!

Rossibaer
 
@Rossibaer:
Es geht nicht um .NET, auch wenns im Titel steht, es geht um die MSVC-Runtime.

@XunnD:
Na ja, ein Release mit dynamischen DLLs würde ja auch laufen. Es geht ja um das Problem beim "Kunden", dass es erst läuft, wenn die MSVCRT dabei ist. Wenn der Kunde aber sein Programm bekommt, dann will er es wahrscheinlich kaum noch debuggen oder? War von mir etwas unglücklich formuliert, ich dachte nur, dass sein Programm schon "fertig" ist und nur das MSVCRT-Problem noch vorhanden ist.
 
@Blitzmerker:

Quelle: Posting#1
Allerdings bringt es wenn kein .NET installiert ist folgende Fehlermeldung:
Um diese Anwendung ausführen zu können, müssen sie zunächst eine der folgenden Versionen von .NET Framework installieren: v4.0.30319. Usw......

Was soll man zu deiner Behauptung und dem was der TE beschrieben hat noch sagen?!
Desweiteren ist mir keine VC Runtime mit dieser Versionsnummer bekannt.
 
OK. Jetzt hab ich nochmal alles langsam durchgelesen, ohne mit meinen Freunden zu skypen... :)
Du hast recht, ich hab nicht bedacht, dass man einfach das .NET Framework einbauen kann.

Es ist halt ein echt nerviges Problem, wenn jedes Mal die VCRT installiert werden muss. (Das war mein erster Gedanke bei dem Thread)

Der TE hat es nicht gesagt, aber ich denke es wird ein Windows-Forms Projekt sein.
In dem Fal ist es wohl die einzige praktikable Lösung einfach das .NET FW zu installieren.
 
@Blitzmerker:
Bei Windows Formularen sehe ich schwarz außer dein Freund arbeitet ausschließlich mit der Windows API anstelle des Frameworks. Das Framework kann nicht "eingebaut" werden, aber die MSVCRT kann entweder als DLL gelinkt oder direkt importiert werden, das wäre dann der Schalter den du genannt hast. Bin da momentan nicht so gut im Bilde, welche Option nun davon die LIB importiert und welche die DLL linkt. Und fürs Testen versteht sich von selber, dass man die Debug statt Release Version verwendet. Aber sei es wie es sei...
 
Zurück
Oben