Compilierte programme auf anderen Rechnern ausführen => falsche Anwendungskonfiguration
-
hiho,
na dann werd ich mal meinen ersten Beitrag schreiben
Ich habe eine Frage bezüglich des Ausführens von compilierten Programmen auf anderen Rechnern.
Ich habe es bei einem eigenem Programm versucht und bekam jediglich eine Meldung dass das Programm nicht ausgeführt werden kann da die Anwendungskonfiguration nicht korrekt seiVerwendet habe ich Visual C++ 2005 Express Edition auf einem WinXP System mit Pentium 4 Prozessor.
Ausführen wollte ich es auf einem WinXP System mit Pentium 3 Prozessor.
Beide systeme arbeiten mit 32 Bit.Beim Compilieren habe ich die Release Build eingestellt.
Ich weiss jetzt nicht warum sich dass Programm nicht ausführen lässt
wäre für Hilfe äusserst dankbar
p.s. Das Programm verwendet die SDL, die zugehörigen .DLLs sind mitkopiert worden. Nur so falls dass eine Rolle spielt.
-
Moin,
am besten änderst Du die runtime-library von "Multi-Threaded DLL" in "Multi-Threaded".
Projekt->Eigenschaften->Konfigurationseigenschaften->Codegenerierung->[Laufzeitbibliothek]
Siehe auch : http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=4926&highlight=
Gruß
SciFi
-
also dass mit dem von "Multi-Threaded DLL" in "Multi-Threaded" umschalten funktioniert leider nicht so einfach weil mein compiler dann lauter Linkerfehler produziert
Ich muss mal die anderen Sachen ausprobieren und dann seh ich weiter
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
dann musst du entweder deine dazu gelinkten libs auch auf Multithreaded einstellen oder auf dem Computer auf dem es laufen soll die vcredist installieren.
-
Du musst auf dem Zielsystem das vcredist_x86.exe installieren.
-
Ich bin dabei ein paar Sachen auszuprobieren aber leider hab ich grade ein paar Sachen aus dem realen Leben um die Ohren
Aber die vcredist oder das Net Framework zu installieren is nich so toll da ich meine Programme gerne meinen Freunden schicken will ("hehe sieh mal was ich da programmiert habe" *angeb*)
Ausserdem muss ich mich mal mit der ganzen Thematik auseinander setzen, also Net Framework, Bibliotheken, Multithreaded usw. weil ich nur ein fortgeschrittener noob bin
also ich forsche dann mal weiter
-
mal ne andere Frage was wird eigentlich unter:
Projekt->Eigenschaften->Konfigurationseigenschaften->Linker->Erweitert->[Zielcomputer]
eingestellt
bei mir steht x86 (klingt ja nicht falsch)
kann mir diese einstell Möglichkeit vielleicht helfen?
-
Also im Link von SciFi die Nummern 1 und 4 kommen für mein Problem nicht in frage. ich will ja Programme erstellen die auf anderen Rechnern laufen ohne dass die Leute irgendwelche Sachen installieren müssen.
Die Methode 2 habe ich versucht, jedoch ohne Erfolg
Und Methode 3 erzeugt einen haufen Linker Fehler.
1>Verknüpfen...
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: _exit ist bereits in LIBCMT.lib(crt0dat.obj) definiert.
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: _fprintf ist bereits in LIBCMT.lib(fprintf.obj) definiert.
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: _fopen ist bereits in LIBCMT.lib(fopen.obj) definiert.
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: _fclose ist bereits in LIBCMT.lib(fclose.obj) definiert.
1>msvcrt.lib(MSVCR80.dll) : error LNK2005: __isctype ist bereits in LIBCMT.lib(isctype.obj) definiert.
1>LIBCMT.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>C:\C++\Projekte Eigen C++\SDL_Game2\Release\SDL_Game2.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
1>Das Buildprotokoll wurde unter "file://c:\C++\Projekte Eigen C++\SDL_Game2\SDL_Game2\Release\BuildLog.htm" gespeichert.
1>SDL_Game2 - 8 Fehler, 8 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========Also ich glaub ich muss mich doch mal an nen anderen Compiler gewöhnen aber die haben auch so ihre Eigenarten die ich nicht verstehe
-
hmm... also auch wenn ich auf dem anderen Computer das NetFramework installiere funktionierts immer noch nicht
Und vcredist habe ich nicht weil ich die Express version verwendedass Mitliefern von .dll's funktioniert auch nicht
bleibt nurnoch Multithreaded /MT übrig .... und dass produziert bei mit nur Linker Fehler (siehe oben)
hat keiner eine Idee?
ich glaub ich dreh hier bald am Rad
-
such halt mal bei Microsoft nach dem Redistributebale (Englische einschließen!)
-
also ich glaube es liegt ein Fluch über mir
die runtergeladene vcredist erzielt auf meinem Zweitrechner auch keine wirkung *mit Faust auf Tisch schlag*
Ich weiss ja dass Programmieren eine knifflige Sache ist bei der man viel Geduld braucht nur dass is echtn Ding
ich bin ja nun kein Kleinbeigeber aber dass treibt mich jetzt echt in den Wahnsinn.
Dass mit dem Runtime Library auf MultiThreaded umstellen klingt für mich ja nach der besten Lösung. Nur ich weis net wie ich gegen die Linker Fehler vorgehen muss.
irgendwie werden da gewisse Funktionen sowohl in der msvcrt.lib (die bei MultiThreadedDLL verwendet wird) als auch in der Libcmt.lib (MultiThreaded) definiert was zu Bibliothekskonflikten führt.
Wenn ich nun sage dass die msvcrt.lib ignoriert werden soll so tauchen massig Nicht aufgelöstes externes Symbole auf.
Gibt es denn keinen Menschen auf Erden der jemals ein Programm mit SDL auf VC2005Express compiliert hat und dessen Programm anschliessend auch auf anderen Rechnern lief und der mir sagen kann wie er dass Gemacht hat.
*Ganz tief Luft hol*
-
Also ich hab dass Problem jetzt gelöst indem ich mir Visual C++ 2003 .Net Standard besorgt habe. :p
Nach einem Jahr seit dem ich nun schon programmiere lohnt sich die Anschaffung auch aus anderen Gründen
Also dann bis zu meinem nächsten Thread und Danke an alle die mir geholfen haben
-
Also diese ganzen Library-Varianten können einen Einsteiger tatsächlich zur Weißglut bringen. Teilweise habe selbst ich manchmal ein paar Schwierigkeiten, aber meistens liegt es an mir selber (Problem sitzt nicht im Computer, sondern sitzt meistens davor!). Irgendwann hat man alles ausprobiert, und weiß dann irgendwann was man einstellt und was mein sein lässt.
Am besten man stellt sich sein Projekt einmal ein, und ändert es nicht mehr.
Aber MSVC2003 habe ich auch noch, das ist für einen Einstieg auch nicht schlecht. Mach aber nicht den Fehler, und gurke damit 10 Jahre rum. Es gibt leider noch sehr viele, die den ollen MSVC6.0 benutzen. Der ist von 1998 und der macht heute mit modernem C++ nur Probleme.