.exe ist nicht überall ausführbar?
-
Hallo
hab mir ein Win32-C++ Programm geschrieben, dass 2-3 WINAPI Aufrufe macht. Das ganze kompiliere ich mit VC++ 2009 Express.
Habe dazu folgendes Problem:
Die als release/debug kompilierte .exe Datei funktioniert komischerweise nicht auf jedem PC.
Habe hier mehrere Windows XP PCs (Service Pack zwischen 1 und 3, ist unterschiedlich). Auf manchen läuft die .exe problemlos, andere können diese gar nicht ausführen.
(es kommt dann immer ein Popup mit einer Fehlermeldung, wo ein rechtschreibfehler drin ist, "anwenungsfehler").Hab es bisher nicht geschaft den gemeinsamen nenner der pcs zu ermitteln auf denen es nicht läuft. Bin daher etwas ratsuchend unterwegs, hoffe mir kann einer helfen?
-
also zunächst mal, es gibt kein vc++ 2009, wenn, dann hast du die 2008
ok, also VC++ linkt standardmäßig deine Programme mit der dynamische C++ Runtime.
das heißt, auf jedem Rechner, auf dem deine Programme laufen sollen, muss diese Runtime ebenfalls verfügbar sein.auf PCs mti Visual Studio ist die logischer Weise schon drauf.
auch einige Spiele, welche mti VC++ entwickelt wurden, installieren diese Bibliotheken gleich mit.Den Installer dafür kann man sich hier herunterladen:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=dedie 2. Möglichkeit besteht darin, zur Laufzeitumgebung (Runtime Environment) einafch statisch zu linken.
Dazu gehst du in die Projekteigenschaften
in den Bereich C/C++ und wählst dort CodegenerierungIn dem Dialog gibt es nun den Eintrag "Laufzeit Bibliothek".
In der Debug-Variante steht da standardmäßig: "Multithreaded-Debug-DLL (/MDd)"
das DLL weißt auf dynamische Verlinkung hin (Dynamic Link Library)
um statisch zu linken, wählst du hier: "Multithreaded-Debug (/MTd)"das selbe geht auch bei Release
aus "Multithreaded-DLL (/MD)"
muss hier "Multithreaded (/MT)" werden.danach solten die Programme auch auf Rechnern laufen, wo kein Visual Studio und kein Redistributable Package installiert ist.
ACHTUNG: neukompilieren nicht vergessen, sonst wirken die änderungen nicht
MfG Drako