0

我一直在尝试编译最基本的 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++ 或缺少的 main 有关。我没有使用 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;
}
4

3 回答 3

6

不要使用“其他链接器选项”。使用“链接库”部分。添加以下项目。

mingw32
SDLmain
SDL

您可以放入-mwindows“其他链接器选项”部分。

于 2013-04-04T17:25:11.257 回答
0

万一其他人遇到这个问题,我将 -lmingw32 放在-lSDLmain 和 -lSDL之后,这对我来说是这个问题。把 -lmingw32 首先修复它。

于 2014-03-05T03:43:59.380 回答
0

我在我想在 linux 和 windows 上编译的项目中遇到了同样的错误。我使用 makefile 来编译项目。一个对我有用的解决方案,虽然我承认它有点像把它添加到 main.cpp (无论你的主要功能在哪里)

extern "C" {

    int WinMain(int argc, char** argv)
    {
        return main(argc, argv);
    }
}

这使得链接器找到 WinMain 并将其用作程序的入口点。我也希望这个解决方案不会破坏 linux 的可编译性,希望它被认为只是一个未使用的函数。

于 2014-04-14T21:31:58.767 回答