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

1

24.01.2016, 19:29

Linkerfehler beim Kompilieren

1>------ Erstellen gestartet: Projekt: SpaceShooter, Konfiguration: Debug x64 ------
1>LINK : fatal error LNK1104: Datei "sdlmain.libkernel32.lib" kann nicht geöffnet werden.
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========

Probiere schon n bissle das zu kösen, weis aber ehrlich gesag nicht so ganz woran es hakt.
Weis einer von euch vielleicht rat?
Verwende 1.2.15, die anweisungen des buches wurden befolgt. auch ähnliche probleme anderer user konnten mir nicht so recht weiterhelfen.

2

24.01.2016, 19:30

Die Datei sdlmain.libkernel32.lib gibts nicht. Strichpunkt vergessen?
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

3

24.01.2016, 19:34

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;sdl.lib;sdlmain.lib%(AdditionalDependencies)

so der eintrag unter linker/eingabe. Falsch??

4

24.01.2016, 19:36

Da fehlt der Strichpunkt vor %(AdditionalDependencies)
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

5

24.01.2016, 19:38

1>------ Erstellen gestartet: Projekt: SpaceShooter, Konfiguration: Debug x64 ------
1>MSVCRTD.lib(initializers.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>sdlmain.lib(SDL_win32_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_fprintf" in Funktion "ShowError".
1>sdlmain.lib(SDL_win32_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___iob_func" in Funktion "ShowError".
1>C:\Programmierung\Visual\Projects\SpaceShooter\x64\Debug\SpaceShooter.exe : fatal error LNK1120: 2 nicht aufgelöste Externe
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========

neues Ergebnis -_-
kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;sdl.lib;sdlmain.lib;%(AdditionalDependencies)

6

24.01.2016, 19:48

1>MSVCRTD.lib(initializers.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

Du verwendest Release-Libraries für einen Debug Build. Du brauchst die d-Variante.

1>sdlmain.lib(SDL_win32_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_fprintf" in Funktion "ShowError".
1>sdlmain.lib(SDL_win32_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___iob_func" in Funktion "ShowError".

Stelle sicher, dass die Libs zu deiner Version von Visual Studio passen (Version und Architektur).
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

7

24.01.2016, 19:55

Verwende windows 10 64bit, sollte doch kompatibel sein oder?
Hab mir nur die Developement Libary für Visual c++ runtergeladen.
Aber vielen Dank schonmal^^

8

24.01.2016, 20:03

Die SDL.dll die kopiert werden soll muss schon in das release/debugg Verzeichnis vom spiel, oder?
Oder muss das in ein extra Verzeichnis von Visual Studios.
Nebenbei ich verwende Visual Studios 2015.

9

24.01.2016, 21:13

Ja, im Debug/Release Ordner ist sie richtig. Aber das ist erst wichtig, wenn das Linken geklappt hat.
Windows sucht DLL immer an folgenden Orten:
Im Verzeichnis der Exe
In allen Verzeichnissen im %PATH%, (also z.B. auch in c:\windows\system32 )

10

24.01.2016, 23:45

Im Groben richtig, aber im Detail natürlich mal wieder komplizierter:

https://msdn.microsoft.com/en-us/library…op_applications

(weiß grad nicht, ob das der aktuellste Artikel ist, oder ob sich schon wieder was verändert hat).

Man muss davon nicht alle Details auswendig kennen, aber man sollte wissen, wo man nachschauen muss, falls man mal Probleme hat.

Außerdem sollte man bei DLL-Fragen immer Dependency-Walker kennen:
http://www.dependencywalker.com/


Und zu guter Letzt natürlich wo es nur irgendwie geht auf so einen Rotz wie DLLs am besten ganz verzichten (-> statisch Linken). Spart eine Menge Ärger.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige