C++ Anwendung - Fehlermeldung: The system cannot execute the specified program
-
Hi,
ich hab bei ner C++ Anwendung, die mit VS2005 oder VS2008 kompiliert is (kommt bei beiden der selbe fehler), die Fehlermeldungen:
WinXP Englisch:
The system cannot execute the specified programWin7 Deutsch:
Diese Anwendung konnte nicht gestartet werden, da die Side-by-Side-Konfiguration ungültig ist. Weitere Informationen finden sie im Anwendungsereignisprotokoll. Weitere Details können auch mit dem Befehlszeilentool sxstrace.exe angezeigt werden.Fehlermeldung kommt nur, wenn auf dem System nicht das Visual Studio installiert ist, mit dem es kompiliert wurde. Sol heißen, wenn auf einem System VS2008 installiert ist, läuft die exe, wenn sie mit VS2008 kompiliert wurde (mus nich auf dem selben System kompiliert worden sein), aber nicht die exe die mit VS2005 kompiliert wurde. Source Code is der selbe.
Nachdem ich per google gesucht hab (nach Side-by-Side-Konfiguration) kam folgendes raus:
Microsoft Visual C++ 2005 SP1 Redistributable Package (x64)
Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
gebracht ham die aber leider au nix ....Ich denke da fehlt wohl einfach ne benötigte Bibliotek, aber includet is fast nichts, nur standard Kram
#include "stdlib.h" #include "stdio.h" #include "string.h"Wäre super wenn jemand mir helfen könnte, komm da nich weiter xD
Schonmal vielen dank für eure Hilfe.
-
Hast du die Header denn in deinem Projekteverzeichniss? Ansonsten einfach mal per:
#include <>ausprobieren...
-
Kóyaánasqatsi schrieb:
Hast du die Header denn in deinem Projekteverzeichniss? Ansonsten einfach mal per:
#include <>ausprobieren...
hat zum glück nichts damit zu tun^^
das hier hilft dir vll:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-253258-and-sid-is-93b453cf2bdc1d90f9bdac5d85f30d34.html#include "stdlib.h" #include "stdio.h" #include "string.h"ist auch falsch:
#include <cstdlib> #include <cstdio> #include <string>heißen die header
bb
-
nö, waren nich im verzeichniss, aber mit
#include <stdlib.h> #include <stdio.h> #include <string.h>kommt der selbe fehler
edit:
unskilled's post nicht gesehen, den les ich gleich xDedit2:
Ad aCTa schrieb:
Ach komm, da ist es einfacher, die DLLs rein zu kompilieren. Projekteinstellungen ---> C/C++ ---> Codegenerierung ---> Runtime Libraby auf das stellen, wo nicht DLL steht.
"Runtime Libraby" entspricht "Laufzeitumgebung" ?
-
Ja, die CRT (C Runtime) = Laufzeitumgebung. Wenn du sie reinkompilierst, ist das Programm größer, bringt aber alle Funktionalität mit. Tust du es nicht, hofft man, dass der Kunde die richtigen DLLs hat (was wie bei dir meistens nicht der Fall ist).
-
ok, wenn ich das nu umstelle,
Laufzeitumgebung auf Multithreaded-Debug (/MTd), vorher Multithreaded-Debug-DLL (/MDd)
kommt folgender Fehler beim kompilieren:Fehler 7 general error c101008a: Failed to save the updated manifest to the file ".\Debug\md5-16-brute.exe.embed.manifest". Falscher Parameter. mt.exe md5-16-bruteedit: Lösches des Manifests hat schon gereicht
jetzt funktionierts, vielen dank euch allen
-
TGGC schrieb:
Deine side-by-side-konfiguration ungültig. Das hat nichts mit C++ zu tun, sondern nur wie Vista mit dlls und Manifesten umgeht. f'`8k
naja, kann ja zumindest nicht nur an vista/win7 liegen, da winxp ja auch ne Fehlermeldung bringt
edit: Lösches des Manifests hat schon gereicht
jetzt funktionierts, vielen dank euch allen
-
leb0rtran schrieb:
TGGC schrieb:
Deine side-by-side-konfiguration ungültig. Das hat nichts mit C++ zu tun, sondern nur wie Vista mit dlls und Manifesten umgeht. f'`8k
naja, kann ja zumindest nicht nur an vista/win7 liegen, da winxp ja auch ne Fehlermeldung bringt
Soll nur heissen, das es dir mit C++ unter Linux nicht passiert, aber mit anderen Sprachen unter Windows auch. f'`8k
Gruß, TGGC (Was Gamestar sagt...)
-
TGGC schrieb:
Soll nur heissen, das es dir mit C++ unter Linux nicht passiert, aber mit anderen Sprachen unter Windows auch. f'`8k
Das stimmt nicht. Selbst mit C++-Programmen unter Windows muss dieser Fehler nicht auftreten, solange sie nicht mit Visual Studio erstellt wurden bzw. die Microsoftschen CRT-DLLs verwenden.
Ein mit GCC (MingGW) erstelltes Programm braucht natürlich auch GCC-DLLs, jedoch keine Manifeste, es sei denn, man möchte ein GUI-Programm, das die mit XP eingeführte Optik (Themes) verwendet. Dann braucht man ein entsprechendes Manifest. Es genügt aber, wenn man es passend benennt und in denselben Ordner wie die EXE legt. Die GCC-DLLs braucht man auch nicht installieren, das System findet sie, wie gehabt, über PATH.
Nur im Falle der Microsoftschen CRT-DLLs muss man entweder auf jedem Rechner, auf dem ein Programm laufen soll, die DLLs explizit installieren (Redistributable Package) oder man legt die DLLs zusammen mit einem passenden Manifest in denselben Ordner wie die EXE.
Das ganze Problem ist von Microsoft selbst künstlich hergestellt, vermutlich, um Entwickler/Distributoren dazu zu zwingen, ihre Programme "korrekt" zu installieren.
Stefan.