Programm läuft unter XP aber nicht 7
-
Hallo
ich habe ein Program, eine kleine GL Fensteranwendung und eine DLL auf die dieses referenziert. Läuft wunderbar unter XP (auf dem ich mommentan arbeite), als ich das heute auf einem 7 Rechner testen wollte, bekam ich direkt folgende Fehlermeldung
... konnte nicht ausgeführt werden ... die side-by-side konfiguration stimmt nicht überein ...
Kann mir jemand sagen wo der Fehler her kommt und mit welchen Einstellungen ich kompilieren muss, um das zu beheben?
-
statisch linken..oder auf dem zielsystem die crt installieren. Oder die crt garnicht benützen!
-
Och da steht vermutlich nicht step-by-step sondern ... ich schätze mal side-by-side.
Und funktionieren wird es vermutlich deswegen nicht, weil die verwendeten Runtime DLLs fehlen.
Also entweder diese installieren, oder wie lowbyte_ vorgeschlagen hat die Runtime statisch dazulinken.
Und... bei dieser Fehlermeldung kann der gute alte Herr Dependencywalker auch oft hilfreich sein. Dann siehst du nämlich welche DLLs fehlen.lowbyte_ schrieb:
Oder die crt garnicht benützen!
Och das ist aber nu ein reichlich sinnloser Vorschlag.
Die CRT nicht zu verwenden ist irre viel Aufwand, das beschränkt sich nicht darauf keine CRT Funktionen aufzurufen. Total sinnlos für die allerallermeisten Projekte.
-
hustbaer schrieb:
step-by-step sondern ... ich schätze mal side-by-side
Ja sorry, hab mich verschrieben bzw. falsch gemerkt
Also muss ich einfach die c++ 2005 Runtime (VS 2005) auf dem / Rechner installieren?
-
Ja, und zwar am besten immer die neueste...
Das wäre dies hier:
http://www.microsoft.com/en-us/download/details.aspx?id=26347
-
hustbaer schrieb:
lowbyte_ schrieb:
Oder die crt garnicht benützen!
Och das ist aber nu ein reichlich sinnloser Vorschlag.
Die CRT nicht zu verwenden ist irre viel Aufwand, das beschränkt sich nicht darauf keine CRT Funktionen aufzurufen. Total sinnlos für die allerallermeisten Projekte.Ach...
Ja klar ist das für die meisten Projekte sinnlos... aber es ist ein Option.
-
Ja, man kann auch gleich alles in Assembler schreiben.
Oder das Programm mitsamt OS in eine VM packen und diese mitsamt passendem Hypervisor ausliefern.Sind auch beides Optionen die das Problem "CRT fehlt" beseitigen.
Auch beide ca. gleich sinnvoll wie die Option "CRT nicht verwenden".Die Frage ist jetzt: wie sinnvoll ist es sinnlose Vorschläge zu machen?
-
hustbaer schrieb:
Ja, man kann auch gleich alles in Assembler schreiben.
Oder das Programm mitsamt OS in eine VM packen und diese mitsamt passendem Hypervisor ausliefern.Sind auch beides Optionen die das Problem "CRT fehlt" beseitigen.
Auch beide ca. gleich sinnvoll wie die Option "CRT nicht verwenden".Die Frage ist jetzt: wie sinnvoll ist es sinnlose Vorschläge zu machen?
Der letzte Satz ist fies
Die Sache ist eher im Security Bereich zum teil sinnvoll. Aber ist eigentlich ja auch egal...
2/3 meiner Lösungen waren wenigstens praktisch ok
-
Nur mal als konkreter Vorschlag: Statisch linken, dann musst Du keine DLLs oder redist verteilen:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
Jochen Kalmbach schrieb:
Nur mal als konkreter Vorschlag: Statisch linken, dann musst Du keine DLLs oder redist verteilen:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/Ich schlage diesen Thread für die FAQ/Archiv vor!
-
Jochen Kalmbach schrieb:
Nur mal als konkreter Vorschlag: Statisch linken, dann musst Du keine DLLs oder redist verteilen:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/Hab ich doch geschrieben. Statisch linken... das man da die redist nicht verteilen muss sollte jedem klar sein.
-
edit
Sorry da habe ich was falsch verstanden. Würde diesen thread auch für die FAQ vorschlagen.
-
Moin moin,
wie ich sehe ist hier eine Diskussion entstanden. Also, das mit dem sxstrace hat au irgend einem Grund nicht funktioniert und so habe ich im Ereignisprotokoll unter Windows Log den Fehler gefunden.
Zwar sind auf dem System durch einige Spiele etc. alle Runtimes vorhanden, jedoch kein VS und da mit -debug erstellt wurde, versucht er die Debug-dlls abzurufen. Das funktioniert natürlich nicht und so kommt es zu diesem Fehler.
Muss man auch erst einmal drauf kommen.
-
lowbyte_ schrieb:
Jochen Kalmbach schrieb:
Nur mal als konkreter Vorschlag: Statisch linken, dann musst Du keine DLLs oder redist verteilen:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/Hab ich doch geschrieben. Statisch linken... das man da die redist nicht verteilen muss sollte jedem klar sein.
Funktionierte bei mir nicht, weil er spätestens beim Binden der Funktionen rausgesprungen ist, ich denke auch wieder wegen des -debug
-
Du spricht in Rätseln...