Was brauch ich für C++
-
Kann man mit dieser Version auch EXE erstellen, die ohne das .NET laufen?
-
Ja.
-
Und WIE ? ^^
Also habe diesen Code:
#include <iostream> using namespace std; int main () { cout<<"Hallo Welt!"; cin.get(); return (0); }
Compiliert. Datei ist 8 kb grosss. Hab sie einem Kumpel geschickt per Icq. Und kam nur Fehlermeldung bei ihm. Auf meinen Pc`s ist das .NET 2.0 oder neuer schon drauf und da geht es.
Also kann ich mit Visual Studio Express 2005 & Microsoft Platform SDK for Windows Server 2003 R2 allein lauffähige .EXE dateien erstellen. Die ohne zusatzsoftware auskommen? Wie zb bei Mingw?
mfg isi und Thx für die netten Antworten
-
Was für eine Fehlermeldung kam? Hast du die richtige Art von Projekt ersellt?
-
Höchst wahrscheinlich, hat er nicht die aktuelle C++ Runtime Lib, mit welche dein C++ kompiliert würde.
Kompiliere die Runtime statisch rein ;o
-
Zu JEDEM C/C++-Programm wird auch eine C-Runtime benötigt. DIe aktuellste fehlt halt auf den aktuellen Rechnern. Aber diese C-Runtime hat nichts mit .NET zu tun. Die C-Runtime gabs auch schon bei VC6, nur lag diese Runtime schon den Windows-9x und neuer bei, und deshalb ist das nicht aufgefallen.
Hier gibts die aktuelle für Enduser zum Download:
Oder statisch linken, dann ist die Runtime in der EXE drin.
-
Vielen Dank, dann musss ich das mal suchen, bin eben noch neu im Element.
Aber hab das auch schon gesehen mit Statischen, nur weisss ich nicht welches.Ok MFC STatisch denke mal ist es. ^^
-
Öhm, sollte die C-Runtime nicht bei Windows automatisch IMMER dabei sein?
-
Ja, aber nicht unbedingt in der geforderten Version. Die CRT bleibt ja nicht 100 Jahre unverändert. Und MSVC2005 hat nunmal eine aktuellere CRT als sie z.B. bei WinXP beiliegt (weil WinXP weit vor 2005 erschien). Wer MSVC2003 benutzt hatte (wie ich) hatte auch schon das Problem, das WinXP nicht die 2003er Runtime hatte, weil WinXP 2001 raus kam und die MSVC6.0 CRT hat. Nur war komischerweise beim 2003er die Fehlermeldung eindeutiger ("CRT71.DLL wurde nicht gefunden").
-
Heißt das, dass VS per default die CRT dynamisch linked?
-
Die Projekteinstellungen haben defaultmäßig ein dynamisches Linken der CRT eingestellt. Und es macht auch Sinn! Aber kann ja jeder (wie bereits gesagt) mit einem Klick ändern.
-
Hm anderes Problem, ich hab das nun Statisch gemacht.
Nun steht das beim Compilieren ->
Codegenerierung ist abgeschlossen.
LINK : warning LNK4199: /DELAYLOAD:OleAcc.dll wird ignoriert; keine Importe von OleAcc.dll gefunden.
Das Manifest wird eingebettet...
Das Buildprotokoll wurde unter "file://g:\Coden\MSVCpp\Adressist\Adressist\Release\BuildLog.htm" gespeichert.
Adressist - 0 Fehler, 1 Warnung(en)
========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========Die Datei lässt sich starten ohne .Net oder CRT Dateien. Ist die Warnung schlimm? Und kann ich die irgendwie wegbekommen?
mfg
-
Du kannst jede Fehlermeldung in der MSDN nachschlagen. Such mal nach LNK4199.
-
Die OleAcc.dll wird doch nur ignoriert, weil du keine Funktion aus der Verwendest. Ausserdem ist das nur ne Warnung^^