Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

-=Andreas=-

unregistriert

1

02.04.2010, 11:46

Spiel auf einem anderen Rechner installieren ?

Hallo!

Ich möchte mein Spiel auf einem anderen Rechner installieren. Das Spiel wurde mit C++ und SDL erstellt.
Ich benutze Visual C++ Express 2008. Unter Projekt > Projekt-Eigenschaften... > Linker > Eingabe habe ich
unter Zusätzliche Abhängigkeiten folgende DLL Dateien eingebunden "SDL.lib SDLmain.lib SDL_image.lib SDL_mixer.lib SDL_ttf.lib". Die msvcrt.lib ignoriere ich. Unter C/C++ > Codegenerierung habe ich unter Laufzeitbibliothek (/MD) also Multithreaded-DLL eingestellt. In dem Ordner wo sich auch die .exe Datei befindet sind auch die .dll Dateien. Wenn ich nun den so erstellten Ordner auf den anderen Rechner kopiere und die .exe starten möchte dann bekomme ich eine Fehlermeldung die besagt das die Anwendungskonfiguration nicht korrekt ist. Daraufhin habe ich vcredist_x86 also Microsoft Visual C++ 2008 Redistributable auf dem Rechner installiert auf dem das Spiel laufen soll. Aber leider funktioniert es jetzt auch nicht. Weiß jemand Rat?

... Mir ist gerade aufgefallen das ich diesen Beitrag eigentlich unter "Programmierung allgemein" posten wollte :whistling:

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

02.04.2010, 11:50

Probier mal ob du die Laufzeitbibilothek auf "Multithreaded" stellen kannst.
Schau mal ob vor Ort nicht noch ein paar Dll-Dateien fehlen, die du in den Programmordner legen solltest.

-=Andreas=-

unregistriert

3

02.04.2010, 11:55

Ich habe nochmal genau nachgeschaut aber es fehlen keine Dll-Dateien.

Zitat

1>Verknüpfen...
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fprintf".
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__remove".
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fopen".
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__setbuf".
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__freopen".
?(

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-=Andreas=-« (02.04.2010, 12:04)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

02.04.2010, 11:58

Dieser FAQ-Artikel ist zwar für VS2005, aber zumindest erklärt er was du tun musst. Am einfachsten ist es immer, wenn du die VC++ Redistributable mitlieferst und der Benutzer diese dann manuell installiert:
Visual C++ 2005 Programme auf Rechnern ohne Visual C++ 2005

-=Andreas=-

unregistriert

5

02.04.2010, 20:33

Also - Ich habe in meinem Ordner ...\Visual Studio 2008\Projects\Spiel\Spiel\Release\ die Manifest Datei Spiel.exe.intermediate.manifest. Immer wenn ich auf Debuggen > Starten ohne Debuggen gehe wird diese Manifest Datei verwendet. Ich dachte zuerst man kann in diese Datei einfach die Zeilen
<file name="msvcr90.dll"/><file name="msvcp90.dll"/><file name="msvcm90.dll"/> einfügen und dann funktioniert es aber dann ist mir aufgefallen das die Datei immer wieder neu generiert wird. Also denke ich jetzt das ich unter Spiel-Eigenschaftenseiten > Linker > Zusätzliche Manifestabhängigkeiten eine XML Datei verlinken muss die die Zeilen <file name="msvcr90.dll"/><file name="msvcp90.dll"/><file name="msvcm90.dll"/> enthält. Aber wie immer ich es auch versuche es funktioniert nicht. Ich habe auch schon Net 2.0 und dieses Redistributable Teil auf dem Zielrechner installiert aber dennoch funktioniert es nicht. Dann habe ich auch noch den Ordner C:\WINDOWS\WinSxS\amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_a17e7c1e auf den Zielrechner kopiert aber das geht auch nicht. Mit dem Programm Dependency Walker bekomme ich dann auch immer angezeigt das sich bei einem funktionierenden Release die z.B. msvcr90d.dll im Ordner C:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f befindet. Muss ich vielleicht diesen Ordner auf den Zielrechner kopieren? :( ich weiß nicht mehr weiter.

6

02.04.2010, 21:26

Ich hatte mal das Problem, dass ich die Debugversion auf einem anderen Rechner hatte, die demnach auch die Debugruntime brauchte. Die Releaseversion lief dann, sobald man VCredist installiert hat.
Lieber dumm fragen, als dumm bleiben!

-=Andreas=-

unregistriert

7

03.04.2010, 13:02

:) Hallo!

Ich bin nun etwas weitergekommen. Allerdings bekomme ich jetzt mit dem Dependency Walker auf dem Zielrechner folgende Warnung:

Zitat

Error: The Side-by-Side configuration information for "e:\debug\SDL SPIEL VERSUCH 2.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.

http://www.dependencywalker.com/
Hiermal die .dwi Datei!

-=Andreas=-

unregistriert

8

03.04.2010, 19:25

Ich habe jetzt nochmal ein Release mit Multithreaded-DLL erstellt und bekomme folgende Fehlermeldung:

Zitat


1>Asteroid.obj : error LNK2001: Nicht aufgelöstes externes Symbol "@__security_check_cookie@4".
1>Asteroid.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)".
1>Asteroid.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual char const * __thiscall std::exception::what(void)const " (__imp_?what@exception@std@@UBEPBDXZ)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall std::exception::~exception(void)" (__imp_??1exception@std@@UAE@XZ)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall std::exception::exception(void)" (__imp_??0exception@std@@QAE@XZ)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall std::exception::exception(char const * const &)" (__imp_??0exception@std@@QAE@ABQBD@Z)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall std::exception::exception(class std::exception const &)" (__imp_??0exception@std@@QAE@ABV01@@Z)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp___invalid_parameter_noinfo".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__rand".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""const type_info::`vftable'" (??_7type_info@@6B@)".
1>Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__exit".
1>LINK : error LNK2001: Nicht aufgelöstes externes Symbol "_mainCRTStartup".
Was könnte das sein?

-=Andreas=-

unregistriert

9

03.04.2010, 22:23

Also ich habe es jetzt geschafft eine Multithreaded-DLL Version als Release zu erstellen. Die DLLs befinden sich im Ordner. Aber es läuft nicht auf dem Zielrechner. Der Hinweis von Dependency Walker lautet: Error: The Side-by-Side configuration information for "e:\release\SDL SPIEL VERSUCH 2.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.

10

03.04.2010, 22:42

Vielleicht wird nach Lektüre dieses Artikels einiges klarer...
fka tm

Werbeanzeige