Nicht link zu SDL2-Funktionen, die mit MinGW
Ich bin relativ neu in der Programmierung und ich habe beschlossen, SDL versuchen, aber ich bin ein bisschen stecken. Ich habe nicht in der Lage zu bauen, das Projekt in codeblocks und ich bekomme 'undefined reference' für alle SDL Funktionen. Ich habe gesehen, dass viele ähnliche Fragen hier, aber keine der Lösungen scheint zu helfen. Hab ich schon Hinzugefügt, die \include\SDL2 und das \lib-Ordner durchsuchen von Verzeichnissen, die ich Hinzugefügt habe, SDL2Main und SDL2 zu link-Bibliotheken in den linker-Optionen, ich habe auch Hinzugefügt -mwindows zu anderen linker-Optionen. Auch habe ich versucht die Verlinkung gegen die 64-bit-version als gut, aber die Dinge wurden noch schlimmer.
Hier ist mein Quellcode, ziemlich viel kopiert, gerade aus dem tutorial habe ich angefangen:
#include <SDL.h>
SDL_Window* g_pWindow = 0;
SDL_Renderer* g_pRenderer = 0;
int main(int argc, char* args[])
{
//initialize SDL
if(SDL_Init(SDL_INIT_EVERYTHING) >= 0)
{
//if succeeded create our window
g_pWindow = SDL_CreateWindow("Chapter 1: Setting up SDL",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
//if the window creation succeeded create our renderer
if(g_pWindow != 0)
{
g_pRenderer = SDL_CreateRenderer(g_pWindow, -1, 0);
}
}
else
{
return 1; //sdl could not initialize
}
//everything succeeded lets draw the window
//set to black //This function expects Red, Green, Blue and
//Alpha as color values
SDL_SetRenderDrawColor(g_pRenderer, 0, 0, 0, 255);
//clear the window to black
SDL_RenderClear(g_pRenderer);
//show the window
SDL_RenderPresent(g_pRenderer);
//set a delay before quitting
SDL_Delay(5000);
//clean up SDL
SDL_Quit();
return 0;
}
Und hier ist der build-log:
mingw32-g++.exe -LC:\dev\sdl\SDL2-2.0.1\x86_64-w64-mingw32\lib -o bin\Debug\GeometryProject.exe obj\Debug\main.o -mwindows C:\MinGW\lib\libmingw32.a C:\dev\sdl\SDL2-2.0.1\x86_64-w64-mingw32\lib\libSDL2main.a C:\dev\sdl\SDL2-2.0.1\x86_64-w64-mingw32\lib\libSDL2.a
obj\Debug\main.o: In function `SDL_main':
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:7: undefined reference to `SDL_Init'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:13: undefined reference to `SDL_CreateWindow'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:17: undefined reference to `SDL_CreateRenderer'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:27: undefined reference to `SDL_SetRenderDrawColor'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:29: undefined reference to `SDL_RenderClear'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:31: undefined reference to `SDL_RenderPresent'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:33: undefined reference to `SDL_Delay'
C:/Users/Kris948/Desktop/ProjectsUni/GeometryProject/main.cpp:35: undefined reference to `SDL_Quit'
C:\MinGW\lib\libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
9 errors, 0 warnings (0 minutes, 0 seconds)
Gibt es etwas, was ich versuchen könnte? Ich würde wirklich gerne diese Ausführung zu erhalten, und wäre für jede Hilfe dankbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein mögliches problem ist, dass Ihre Verlinkung auf eine SDL2-library für eine andere Architektur.
Sollten Sie mit Hilfe
statt
Auch nach der Einstellung des library-Suchpfad verwenden diese notation, um den link zu Bibliotheken
Es ist viel einfacher zu Lesen.
Anstatt vollständigen Pfad, versuchen
-LC:/PATH_TO_SDL -lSDL2main -lSDL2
(oder nur eine SDL-option) statt; dielib
und.a
ist bereits bekannt durch den linker.(nicht sicher, wenn Sie entweder
/
oder\
)Da man sich mit C++, ersetzen Sie Ihre mit diesem:
Diese sagt dem compiler, zur Behandlung von SDL als C und nicht C++ - code.
Siehe auch: SDL2 nicht link richtig