Ich versuche, SDL-Bibliothek auf meinem Macbook arbeiten, um ein kleines Spiel (wahrscheinlich Tetris) in c. Ich habe die Installationsanweisungen für SDL unter https://wiki.libsdl.org/Installation gelesen und befolgt.C wird nicht mit sdl.h kompiliert
Wenn jedoch habe ich versucht, den folgenden C-Code zu kompilieren:
#include <SDL2/SDL.h>
#include <stdio.h>
int main()
{
SDL_Init(SDL_INIT_VIDEO);
printf("Window Initialization!\n");
SDL_Window *window;
//printf("SDL_WINDOWPOS_CENTERED is %d\n", SDL_WINDOWPOS_CENTERED);
window = SDL_CreateWindow(
"SDL2 Test",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480, 0);
if(window == NULL){
printf("Creation of Window Failed\n");
SDL_Quit();
return -1;
}
SDL_Delay(3000); //delay for 3000 ms
SDL_Renderer* rend = NULL;
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
mit dem Befehl:
gcc main.c -o run
Der folgende Fehler gedruckt wird:
Undefined symbols for architecture x86_64:
"_SDL_CreateWindow", referenced from:
_main in sdl1-a80c27.o
"_SDL_Delay", referenced from:
_main in sdl1-a80c27.o
"_SDL_DestroyWindow", referenced from:
_main in sdl1-a80c27.o
"_SDL_Init", referenced from:
_main in sdl1-a80c27.o
"_SDL_Quit", referenced from:
_main in sdl1-a80c27.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Da ich habe make und sudo make installieren, laut der Website sollte die SDL jetzt "universal" sein. Also ich nehme an, ich würde Linker nicht brauchen. Aber anscheinend ist das nicht der Fall.
Zuvor habe ich auch versucht, nur Framework-Datei in/Library/Frameworks hinzuzufügen. Und dann, wenn ich tat:
gcc sdl1.c -o run -F/Library/Frameworks/SDL2.framework/Headers -framework SDL2
Der Code kann kompiliert bekommen. Manchmal möchte ich jedoch auch SDL2_image.h einbeziehen und ein weiteres -F /.../ wird nicht funktionieren.
Ich würde wirklich alle Vorschläge/Ratschläge zu schätzen wissen. Vielen Dank!
Sie müssen wahrscheinlich mit '-lSDL' kompilieren. – immibis
Um die Flagge zu bekommen, benutze 'sdl2-config --cflags --libs' –