Mit Visual C++ kompilierte Programme weitergeben

Windowsspezifische Probleme, WinAPI, conio.h
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Do Jul 02, 2009 10:07 pm

Wieder mal was Windows-spezifisches :)

Folgendes Problem:
Ich habe ein C++-Programm geschrieben welches auch SDL verwendet. Also vom Code her ist das Programm systemunabhängig. g++ auf Ubuntu und BSD macht überhaupt keine Probleme. Das Programm wird mit MS Visual C++ 2008 kompiliert und funktioniert auch problemlos unter Vista (nach stundenlangem Herumprobieren...). Versuche ich es jedoch auf XP ohne Visual oder auf Vista ohne Visual kann das Programm nicht gestartet werden. Dabei habe ich den kompletten Projektordner kopiert. Die DLLs und alle anderen vom Programm benötigten Dateien liegen im Verzeichnis der .exe.
Windows behauptet jedoch, dass die Anwendungskonfiguration nicht korrekt ist und ich die Anwendung neu installieren soll (obwohl es ein einfaches Programm und keins mit Setup oder so ist). Die SDL-DLLs hab ich natürlich alle mitgegeben.
Ich schätze, dass das Problem durch den fehlenden Compiler (oder besser gesagt dessen fehlende Bibliotheken) verursacht wird. Ich hab schon ne ganze Weile versucht die Runtime-Libs (msvcr etc.) mitzugeben, aber das hat auch nichts gebracht. Wahrscheinlich habe ich die falschen oder nicht alle kopiert.
Kann mir jemand sagen welche DLLs ich mitgeben muss bzw. wo sonst der Fehler ist? Kann ich wenigstens die Visual-DLLs statisch linken? SDL macht ja keine Probleme.

Besten Dank im Voraus. :)

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Dirty Oerti » Do Jul 02, 2009 10:50 pm

Also soweit ich weiß braucht man auf dem Windows, auf dem die Programme, die mit Visual compiliert wurden laufen sollen die sogenannten Visual C++ Executables (oder Redistribut...?)
Sowas in der Art auf jedenfall. Wie's genau heißt weiß ich jetzt nicht, wenn du aber nach OpenSceneGraph suchst und dort dann nach der Installationsanleitung für Windows kommst du daran nicht vorbei :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Xin » Do Jul 02, 2009 11:05 pm

dani93 hat geschrieben:Kann mir jemand sagen welche DLLs ich mitgeben muss bzw. wo sonst der Fehler ist? Kann ich wenigstens die Visual-DLLs statisch linken? SDL macht ja keine Probleme.
Du kannst von Microsoft den "Dependency Walker" herunterladen. Der sagt Dir welche DLLs Deine EXE benötigt und welche DLLs die DLLs benötigen. Und welche davon nicht gefunden werden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 12:22 pm

Dirty Oerti hat geschrieben:Wie's genau heißt weiß ich jetzt nicht, wenn du aber nach OpenSceneGraph suchst und dort dann nach der Installationsanleitung für Windows kommst du daran nicht vorbei :)
Da gibts einige Anleitungen. Ich nehme an du meinst die von der Homepage hier. Über mein Problem finde ich dort jedoch nichts.
Xin hat geschrieben:Du kannst von Microsoft den "Dependency Walker" herunterladen. Der sagt Dir welche DLLs Deine EXE benötigt und welche DLLs die DLLs benötigen. Und welche davon nicht gefunden werden.
Wenn ich mein Programm damit starten will bekomme ich folgenden Fehler:

Code: Alles auswählen

Error: The Side-by-Side configuration information for "c:\...\MEINPROGRAMM.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 module has an unresolved import due to a missing export function in a delay-load dependent module.
Ich habe nach allen DLLs und deren Abhängigkeiten gesucht und die sind auch alle in D:\WINDOWS\System32\. Außer 2 (msvcp90d.dll, msvcr90d.dll) welche ich von Vista kopiert habe. Kann es sein, dass XP einfach nicht mit den Vista-DLLs umgehen kann?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Xin » Fr Jul 03, 2009 12:36 pm

dani93 hat geschrieben:Wenn ich mein Programm damit starten will bekomme ich folgenden Fehler:

Code: Alles auswählen

Error: The Side-by-Side configuration information for "c:\...\MEINPROGRAMM.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 module has an unresolved import due to a missing export function in a delay-load dependent module.
Moment.... das war eine böse Sache... da gibt's bei Google nicht viel zu, aber ich hatte den Fehler letztes Jahr auch und mich zu Tode gesucht.

Aber die Lösung war afair einfach: Das Manifest durfte nicht eingefügt werden.
Hier war das Problem, dass eine XP-Lib nicht auf Win2000 lief, wenn ich mich recht entsinne.
dani93 hat geschrieben:Ich habe nach allen DLLs und deren Abhängigkeiten gesucht und die sind auch alle in D:\WINDOWS\System32\. Außer 2 (msvcp90d.dll, msvcr90d.dll) welche ich von Vista kopiert habe.
Du darfst diese DLLs iirc nicht weitergeben.
dani93 hat geschrieben:Kann es sein, dass XP einfach nicht mit den Vista-DLLs umgehen kann?
Das kann sein, z.B. wenn diese Vista-Abhängigkeiten haben, aber das glaube ich bei den beiden DLLs nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Dirty Oerti » Fr Jul 03, 2009 12:56 pm

Tag :)

Mir ging es hierrum:

http://www.openscenegraph.org/projects/ ... ioBinaries

Diese Visual C++ runtime Bibliotheken brauchst du nämlich, um irgendein mit Visual C++ kompiliertes Programm ausführen zu können :)
So zumindest meine Info^^
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 1:26 pm

Xin hat geschrieben:Aber die Lösung war afair einfach: Das Manifest durfte nicht eingefügt werden.
Löschen des Manifestes bringt auch nichts.
Xin hat geschrieben:Du darfst diese DLLs iirc nicht weitergeben.
Das würde ich nicht sagen. Schließlich sind diese DLLs auch in der freien Express Edition dabei. Auch im Ordner "redist", der eigentlich genau mein Problem lösen sollte sind diese Dateien und ein Manifest. Ich habs schon mit den Dateien aus dem "redist"-Ordner versucht, mal mit Manifest, mal ohne. Immer noch mit der gleichen Fehlermeldung.

Dirty Oerti hat geschrieben: Mir ging es hierrum:

http://www.openscenegraph.org/projects/ ... ioBinaries

Diese Visual C++ runtime Bibliotheken brauchst du nämlich, um irgendein mit Visual C++ kompiliertes Programm ausführen zu können :)
Aber dann muss doch jeder Benutzer dieses Programm installieren. Und genau das will ich verhindern ^^
Ich will eine .exe bei der ein Doppelklick zum Starten reicht.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Dirty Oerti » Fr Jul 03, 2009 1:41 pm

The Visual Studio binaries require that you have either Visual Studio itself installed (the same version as the downloaded binaries) or the Visual C++ runtime for the appropriate platform/compiler combination.
Das hört sich für mich eben so an, als ob das nicht gehen würde. Außer du linkst sie statisch mit ein...

http://board.gulli.com/thread/799332-vi ... ch-linken/

... was aber anscheinend nicht so wirklich funktioniert..?

Oder ganz ohne: http://www.ddj.com/windows/184416623
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Xin » Fr Jul 03, 2009 2:45 pm

dani93 hat geschrieben:
Xin hat geschrieben:Aber die Lösung war afair einfach: Das Manifest durfte nicht eingefügt werden.
Löschen des Manifestes bringt auch nichts.
Eigenschaften -> Manifesttool -> Eingabe und Ausgabe -> Manifest einbetten => Nein.
Das war es - glaube ich.
dani93 hat geschrieben:Aber dann muss doch jeder Benutzer dieses Programm installieren. Und genau das will ich verhindern ^^
Ich will eine .exe bei der ein Doppelklick zum Starten reicht.
Du darfst ausschließlich Funktionalität verwenden, die Du statisch eingebunden hast, ansonsten benötigst Du DLLs in Pfaden, die Deine Anwendungen finden kann - dafür müsste man sie wieder installieren.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 5:30 pm

Ich gebs auf :(
Auch das ändern der Manifesteinstellungen hat nix gebracht.
Hab dann eben Mingw genommen, ist auch viel einfacher, da ich nicht jedes Mal ein (riesiges) Projekt erstellen muss :)
Und einen Thread zum Weitergeben von Mingw-Programmen hatten wir hier ja schon :)
Sollte es jemand hinbekommen wäre das einen FAQ-Eintrag wert.

Antworten