我正在关注如何将SDL与Code :: Blocks一起使用的http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/codeblocks/index.php教程,因为我在我尝试过的每一个该死的IDE中都遇到了麻烦。
该教程非常简单,它在第7步说明 “我们必须告诉编译器链接库。转到链接器设置并粘贴-lmingw32 -lSDL2main -lSDL2”。我做到了那一点。然后它说如果你得到一堆未定义的引用错误,你搞砸了这一步,我真的没有看到我怎么可能弄乱这一步,因为这是一个简单的步骤。
我真的很想开始使用MinGW和Code :: Blocks。 可能有助于解决此问题的信息:
请帮忙。这是我用来检查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;
}
这些是我得到的错误:
-------------- Build:在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 `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))
答案 0 :(得分:1)
您已创建Windows可执行项目。该向导将入口点设置为WinMain
。您的代码实现了一个以main(int argc, char**argv)
为入口点的命令行程序。
如果您想继续使用main
,则应创建一个新的命令行项目并添加
源文件到这个项目。您可以尝试更改项目类型。
对于SDL错误,您应该检查,您使用匹配的编译器和库(32对64位)。