EXE kann bei Anderen nicht ausgeführt werden

Mickeyman

Mitglied
Daten: WinXP Pro SP2, MS Visual Studio 2005 Pro

Hallo Leute,

ich habe hier ein Problem an dem ich schon mehr als ein Monat dran henge und hoffe Ihr könnt mir endlich die Erlösung bringen.
Das Problem ist, dass die Programme, die bei mir fehlerfrei laufen und compiliert wurden, bei anderen nicht ausführbar sind. Bei den anderen erscheint immer folgender Fehler beim Ausführen:
"Diese anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist. Zur Problembehandlung sollten Sie die Anwendung neu installieren."

Allerdings gibt es da wiederum Ausnahmen. Wenn ich ein Projekt einer älteren Version in die aktuelle convertiere, dann fuktioniert das auch bei Anderen.
Was ich noch bemerkt habe ist, dass die ".exe"-Datei bei convertierten Projekten um ca. 400KB größer ist als die von Anderen.

Beim Compilieren von den "nicht convertierten"-Projekten gibt mir der Compiler noch folgende Nachricht aus (bei den Convertierten nicht):
LINK : E:\Dokumente und Einstellungen\...\Eigene Dateien\Visual Studio 2005\Projects\Engine\Debug\Engine.exe not found or not built by the last incremental link; performing full link

Ich habe aber gelesen, dass man das ignorieren kann.

Ich hoffe auf eure Unterstützung.
Mickeyman
 
Hi

Visual Studio 2005 nutzt eine neue Version der MFC (Version 8). Überprüf mal, welche Version auf dem Zielsystem vorhanden. Ist da eine ältere musst du die MFCmit deiner Anwendung verteilen. Bei MS findest du ein Redist-Package zur Weitergabe.
 
Danke für die Antwort,

leider weiß ich haber nicht, wie man die MFC mit seiner Anwendung verteilen kann. Zu dem hab ich auch noch nicht herausfinden können, wie man seine MFC Version nachschauen kann.
Um die MFC zu verteilen hatte ich aber folgendes Versucht:
Unter dem Projekt habe ich Folgendes eingestellt aber leider ohne Erfolg:
"Use MFC in a Shared DLL"
Ich dachte eigentlich, dass es dadurch mit den Anderen geteil wird.

Im Internet hab ich dann noch eine Seite entdeckt wo man MFC DLLs herunterladen kann.
Aber was ich dann damit machen soll weiß wieder rum nicht.

Ich bin wohl leider noch ein Neuling.:(

Hoffe auf weitere Hilfen
Mickeyman
 
Die Option "Use MFC in a Shared DLL" bedeutet, das die MFC-Funktionen aus externen DLLs geladen werden, die somit "geshared" werden, d.h. von verschiedenen MFC-Apps verwendet werden können.

Bei VS 2005 liegen die benötigten Dateien in diesem Verzeichnis:
...\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC
Wenn du diese zusammen mit der EXE auslieferst, sollte deine Applikation auch auf anderen Rechnern laufen.

Gruß
MCoder
 
Danke für Eure Antworten,

ich habe beides mal ausprobiert aber leider hat beides nicht so recht funktioniert. Allerding bin ich mir nicht sicher ob das Redist-Package bei den anderen korrekt installiert wurde, da die Installation wärend des Ladebalkens auf einmal abbricht. Die Person hat aber Service Pack2 und auch den Windows-Installer 3.1.

Das Weitergeben der Dateien hat leider auch nicht gebracht, allerding könnte ich noch den Ordner "Microsoft.VC80.CRT" mitgeben, da ich das auch in einigen meiner Programme verwende. Das habe ich aber noch nicht ausprobiert.
Werde es morgen ausprobieren.


Mickeyman
 
Abend

Ich habe das jetzt mal mit dem "Dependency Walker" bei mir ausprobiert und er hat sogar Fehler ausgegeben. Er konnte die MSJAVA.dll nicht finden und die MPR.dll hatte einen Fehler. Trotz dessen kann ich diese Anwendung bei mir starten. Allerding hab ich einen unterschied entdeckt zwischen den Anwendungen, die aus einer älteren Version stammen und den Neueren. Bei den Älteren werden viel weniger .dll Dateien geldaden, dagegen bei den Neuen werden so um die 100 Stück geladen.

Ich habe das Programm des weiteren auf einem anderen Rechner getestet und es gab da keine Datei die nicht gefunden wurde aber dafür 4 Dateien die anscheinend fehlerhaft sind.
Das sind:
MSCOREE.dll
MSVCM80D.dll
MSVCP80D.dll
MSVCR80D.dll

Bei einem anderen Rechner sind wiederum ausschließlich fehlende Dateien.
Das sind:
MFC80UD.DLL
MSVCR80D.DLL
DWMAPI.DLL
Es gab auch folgende Fehlermeldung:
Code:
Error: At least one required implicit or forwarded dependency was not found.
Error: The Side-by-Side configuration information in "c:\dokumente und einstellungen\...\desktop\BLUB.EXE" contains errors. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren (14001).
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Ich hoffe du kannst damit was anfangen, denn ich hab da keine Ahnung.

Und noch zu deiner zweiten Frage:
Ich erstelle hauptsächlich WIN32 Consolen Anwendungen. Habe aber auch schon zu testzwecken eine CLR Consolen Anwendung erstellt. Resultiert aber mit fast den gleichen Fehlern.

Mickeyman
 
Zuletzt bearbeitet:
MFC-DLLs, die mit "D" enden, sind die Debug-Versionen und die werden natürlich üblicherweise nicht verteilt. Hast du die EXE, die du weitergibst, auch im Release-Mode erstellt?

Gruß
MCoder
 
Danke für den Tipp^^,

habe jetzt einmal eine CLR Consolen Anwendung unter "Batch Build..." und dann im Realese-Mode erstellt und es hat dann tatsächlich auch bei anderen funktioniert. Die exe war dann sogar nur noch 6 KB groß(allerding stand da auch nichts drin).

Habe es dann auch an einer meiner größeren Anwendungen ausprobiert(WIN32 Consolen Anwendung) wo er aber dann um die 180 Fehler ausgab. Von den Fehlern her scheint es, dass er den "Common Language Runtime Support" nicht erkennt, obwohl ich es in der Projektdatei mit eingebunden habe.
(Passiert aber auch nur im Release-Mode. Im Debug-Modus hat alles fehlerfrei funktioniert.)

Also habe ich einfach meine ganzen Header und UNITs in ein CRT Projekt getan und schon hat es funktioniert.

Vielen Dank für Eure Hilfe
Mickeyman
 
Zurück