Code :: Blocks,MinGW,libsdl和GNU C ++编译器:对WinMain @ 16的未定义引用

时间:2013-04-04 17:00:38

标签: c++ mingw codeblocks

我一直在尝试编译最基本的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;
}

3 个答案:

答案 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的可编译性,希望它只会被认为是一个未使用的函数。