我一直在尝试编译最基本的SDL应用程序,但无论我做什么,我都会遇到这个错误:
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../libmingw32.a(main.o):main.c:(.text+0xd2): undefined reference to `WinMain@16'
我为此搜索了解决方案,但它们都与Visual C ++或缺少的主要内容有关。我没有使用Visual C ++,我已经定义了main。
这是我的代码:
#include "SDL/SDL.h"
int main( int argc, char* args[] )
{
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//Quit SDL
SDL_Quit();
return 0;
}
答案 0 :(得分:6)
请勿使用“其他链接器选项”。使用“链接库”部分。添加以下项目。
mingw32
SDLmain
SDL
您可以将-mwindows
放入“其他链接器选项”部分。
答案 1 :(得分:0)
如果其他人遇到此问题,我会在 -lSDLmain和-lSDL之后添加-lmingw32 ,这会给我带来这个问题。把-lmingw32先修好了。
答案 2 :(得分:0)
我在我的项目中遇到了同样的错误,我想在linux和windows上编译。 我使用makefile来编译项目。 一个对我有用的解决方案,虽然我承认它有点像黑客,但是将它添加到main.cpp(无论你的主要功能在哪里)
extern "C" {
int WinMain(int argc, char** argv)
{
return main(argc, argv);
}
}
这使链接器找到WinMain并将其用作程序中的入口点。我也希望这个解决方案不会破坏Linux的可编译性,希望它只会被认为是一个未使用的函数。