LNK1107 Ungültige oder beschädigte Datei SDL2.dll -> Zweck: Joystick verwenden
-
Hallo,
ich möchte einen Joystick über SDL für mein C++ Projekt verwenden, jedoch gibt es Probleme mit der SDL2-dll Bibliothek.
Aus einem Tutorial habe ich folgenden Quellcode (sonst nichts) verwendet, das Projekt ist eine Konsolen-App:#include "SDL.h" int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Quit(); return 0; }
Beim Debuggen mit F5 kommt die Fehlermeldung LNK1107 "Ungültige oder beschädigte Datei: Lesen bei 0x308 nicht möglich", Datei "SDL2.dll" Zeile 1. Ich habe zuvor die SDL2 2.24.2 heruntergeladen und (wie prinzipiell im Internet beschrieben) folgende Einträge in den Projekteigenschaften dazu geschrieben und die Änderungen übernommen:
VC++ Verzeichnisse>>Includeverzeichnisse>> C:\Users\Stefan\source\repos\MySDL\SDL2-2.24.2\include;$(IncludePath)
Linker>>Allgemein>>Zusätzliche Bibliotheksverzeichnisse: C:\Users\Stefan\source\repos\MySDL\SDL2-2.24.2\lib\x86;%(AdditionalLibraryDirectories)
Linker>>Eingabe>>Zusätzliche Abhängigkeiten: SDL2main.lib;SDL2.lib;SDL2.dll;%(AdditionalDependencies)
Ich verwende Visual Studio 2019 mit Debug x86, Windows 11 64bit 22H2.
Ich sitze schon eine Weile daran, das SDL zum Laufen zu bringen. Alles erfolglos. Wenn schon dieses simple Programm nicht läuft?! Kann mir dazu jemand weiterhelfen?
-
Was soll denn die "SDL2.dll" bei den "Zusätzlichen Abhängigkeiten"? Dort werden nur ".lib"-Dateien angegeben (daher auch die Fehlermeldung: falsches Format).
-
@Th69 Danke für den Hinweis. Muss ich die SDL2.dll stattdessen woanders angeben?
-
Die sollte sich in einem Verzeichnis befinden, in dem Windows sie bei Bedarf aus deinem Programm nachladen kann. Das ist zB das gleiche Verzeichnis, in dem deine Anwendung liegt. In der WINAPI Doku zu
LoadLibrary
wird detalliert aufgelistet, wo DLL Dateien in welcher Reihenfolge gesucht werden.Edit:
In der Doku zuLoadLibrary
wurde diese Info mal aufgeführt, sie ist jetzt hier zu finden
-
@stefanpc81: Hast du noch nie mit externen DLLs in deinen Projekten gearbeitet?
-
@Th69 Offenbar ja
Aber wenn ich strikt nach dem Tutorial bei Youtube vorgehe, funktioniert es jetzt. Dieses habe ich vorhin entdeckt. Die SDL2.dll Datei habe ich ins WindowsDirectory (bei mir C:/Windows) kopiert und ich debugge mit x86.
Trotzdem vielen Dank an euch!
Und ein schönes Wochenende an alle!
-
Das war natürlich rhetorisch gemeint - du hast ja schon mit Qt gearbeitet und solltest es daher wissen...
Bedenke, wenn du die Anwendung weitergibst, dann mußt du auch die DLL mit übertragen - daher ist es besser, sie gleich in das Anwendungsverzeichnis kopieren zu lassen (z.B. per PostBuild Event).
-
@Th69 sagte in LNK1107 Ungültige oder beschädigte Datei SDL2.dll -> Zweck: Joystick verwenden:
@stefanpc81: Hast du noch nie mit externen DLLs in deinen Projekten gearbeitet?
Edit: Bin im Ausdrücken etwas schlecht... Ich meinte noch NIE. Bei Qt habe ich das irgendwie noch nicht gebraucht.