未定义的引用SDL与Code:: block

undefined references SDL with Code::Blocks

本文关键字:Code block SDL 引用 未定义      更新时间:2023-10-16

我是按照http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/codeblocks/index.php教程如何使用SDL与Code::块,因为我一直有这个问题在几乎每一个该死的IDE我已经尝试过。

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

我真的很想开始使用这个,同时使用MinGW和Code::Blocks。可能有助于解决此问题的信息:

    我有MinGW目录位于我的C:
  1. 我在我的C:目录中有一个文件夹SDL,在该文件夹中,我通过右键单击项目属性并添加目录,将包括和lib文件从SDL链接到Code::BLocks。这一切似乎都很好。Include目录= C:SDLSDL2-2.0.3x86_64-w64-mingw32 Include SDL2 Lib目录= C:SDLSDL2-2.0.3x86_64-w64-mingw32 Lib
  2. 如前所述,在链接器设置->其他链接器选项中:我写了-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: %sn", SDL_GetError());
        exit(1);
    }
    // Now Shut it down
    atexit(SDL_Quit);
    return 0;
}

这些是我得到的错误:

-------------- 构建:标题(编译器:GNU GCC编译器的调试 )---------------

mingw32-g++.exe -Wall -g -IC:SDLSDL2-2.0.3x86_64-w64-mingw32includeSDL2 -c C:UsersBryanDesktopCodeBlocksTITLEmain.cpp -o objDebugmain.o
mingw32-g++.exe -LC:SDLSDL2-2.0.3x86_64-w64-mingw32lib -o binDebugTITLE.exe objDebugmain.o  -lmingw32 -lSDL2main -lSDL2  
objDebugmain.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:pgiawsrcpkgmingwrt-4.0.3-1-mingw32-srcbld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'
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))

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

如果你想继续使用main,你应该创建一个新的命令行项目并添加你此项目的源文件。或者,您可以尝试更改项目类型。

对于SDL错误,您应该检查是否使用匹配的编译器和库(32位vs. 64位)