Impossible de lien à SDL2 libs. Je reçois undefined reference pour toutes les fonctions SDL-je utiliser
Je suis relativement nouveau à la programmation et j'ai décidé de donner la SDL un essai, mais je suis un peu coincé. Je n'ai pas été en mesure de construire le projet dans codeblocks et j'obtiens 'undefined reference" pour toutes les fonctions SDL. J'ai vu beaucoup de questions similaires ici, mais aucune solution semble aider. Je l'ai déjà ajouté le \include\SDL2 et l' \lib dossiers pour rechercher les répertoires, j'ai ajouté SDL2Main et SDL2 à lier les bibliothèques dans les options du linker, j'ai même ajouté -mwindows à d'autres options du linker. Aussi, j'ai essayé de se lier à la version 64 bits, mais les choses ont même empiré.
Voici mon code source, assez bien copié tout droit sorti du tutoriel que j'ai commencé:
#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;
}
Et voici le journal de génération:
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)
Est-il autre chose que je pourrais essayer? Je voudrais vraiment obtenir ce fonctionnement et serais reconnaissant de toute aide.
OriginalL'auteur user3052572 | 2013-11-30
Vous devez vous connecter pour publier un commentaire.
Un problème possible est que votre lien à un SDL2 de la bibliothèque pour une architecture différente.
Vous devriez être en utilisant
au lieu de
Aussi après la création du chemin de recherche des bibliothèques utiliser cette notation pour le lien vers les bibliothèques
Il est beaucoup plus facile à lire.
OriginalL'auteur Xonar
Au lieu d'ajouter du chemin d'accès complet, essayez
-LC:/PATH_TO_SDL -lSDL2main -lSDL2
(ou un seul SDL option); lalib
et.a
est déjà connu par l'éditeur de liens.(pas sûr si vous devez utiliser ou
/
ou\
)Puisque vous êtes à l'aide de C++, remplacez votre comprennent:
Cela indique au compilateur de traiter SDL en C et pas en C++ code.
Voir aussi: SDL2 ne lien correctement
Regardez les liens erreur, il est traité comme un C fonctions. (C++ fonctions ont leurs noms déformés pour que le compilateur puisse identifier le type de l'information et de MinGW affiche les informations de type avec une référence non définie si il y est)
OriginalL'auteur ollo