2014-05-08 24 views
0

我下面http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/codeblocks/index.php教程如何,因为我已经在几乎每一个该死的IDE我已经试过一直有这个麻烦使用SDL与代码::块。未定义的引用与SDL代码:: Blocks的

该教程非常直接,在步骤7中说明 “我们必须告诉编译器链接库。在链接器设置下并粘贴-lmingw32 -lSDL2main -lSDL2”。我是那么做的。然后它说如果你得到一堆未定义的参考错误,你搞砸了这一步,我真的不知道我怎么可能搞砸这一步,因为这是一个简单的步骤。

我真的想开始使用此,而使用MinGW和代码::块。 信息可能有助于解决此问题:

  1. 我已经位于我的C MinGW的目录:
  2. 我有我的C文件夹SDL:目录,从SDL文件夹,我连接了包括和lib文件中Code :: BLocks,方法是右键单击项目属性并添加目录。这一切似乎工作正常。包括目录= C:\ SDL \ SDL2-2.0.3 \ x86_64-w64-mingw32 \ include \ SDL2 Lib目录= C:\ SDL \ SDL2-2.0.3 \ x86_64-w64-mingw32 \ lib中
  3. 如上所述,在链接设置 - >其他链接器选项:我写-lmingw32 -lSDL2main -lSDL2,但我得到了一堆引用错误。我不知道该怎么尝试,我一直在网上搜索几个小时,甚至取代了SDL_platform.h,因为它导致了问题,并且未定义的引用仍然存在。

请帮忙。这是我用来检查SDL是否正在工作的代码,事实并非如此。

#include "SDL.h" 
#include <iostream> 
#include <cstdio> 
#include <Windows.h> 

int main(int argc, char* argv[]) 
{ 
    // Fire up SDL, this starts all subsystems; audio video etc. 

    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { 
     fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); 
     exit(1); 
    } 
    // Now Shut it down 
    atexit(SDL_Quit); 

    return 0; 
} 

这是我收到的错误:

--------------构建:调试在TITLE(编译:GNU GCC编译)----- ----------

mingw32-g++.exe -Wall -g -IC:\SDL\SDL2-2.0.3\x86_64-w64-mingw32\include\SDL2 -c C:\Users\Bryan\Desktop\CodeBlocks\TITLE\main.cpp -o obj\Debug\main.o 
mingw32-g++.exe -LC:\SDL\SDL2-2.0.3\x86_64-w64-mingw32\lib -o bin\Debug\TITLE.exe obj\Debug\main.o -lmingw32 -lSDL2main -lSDL2 
obj\Debug\main.o: In function `SDL_main': 
C:/Users/Bryan/Desktop/CodeBlocks/TITLE/main.cpp:10: undefined reference to `SDL_Init' 
C:/Users/Bryan/Desktop/CodeBlocks/TITLE/main.cpp:11: undefined reference to `SDL_GetError' 
C:/Users/Bryan/Desktop/CodeBlocks/TITLE/main.cpp:15: undefined reference to `SDL_Quit' 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/libmingw32.a(main.o): In function `main': 
e:\p\giaw\src\pkg\mingwrt-4.0.3-1-mingw32-src\bld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `[email protected]' 
collect2.exe: error: ld returned 1 exit status 
Process terminated with status 1 (0 minute(s), 0 second(s)) 
4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) 

回答

1

您已经创建了一个Windows可执行项目。该向导将入口点设置为WinMain。你的代码实现了一个命令行程序main(int argc, char**argv)作为入口点。

如果你想留在main您应该创建一个新命令行项目和 源文件添加到你这个项目。另外,您可以尝试更改项目类型。

对于你应该检查一下,您使用匹配的编译器和库(32与64位)的SDL错误。

+0

谢谢你,我有我的编译器和库不仅如此混了,我也没有内MinGW的库。谢谢你的帮助。 –

+0

这是一个适合我的答案。 http://stackoverflow.com/questions/20303032/unable-to-successfully-link-to-sdl2-libs-i-get-undefined-reference-for-all-sdl?rq=1 –

相关问题