block, MinGW, libsdl和GNU c++编译器:对' WinMain@16的未定义引用
Code::Blocks, MinGW, libsdl, and GNU C++ compiler: undefined reference to `WinMain@16
我一直在尝试编译最基本的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;
}
不要使用"Other links options"。使用"链接库"部分。增加以下条目:
mingw32
SDLmain
SDL
你可以把-mwindows
放在"其他链接器选项"一节。
以防其他人遇到这个问题,我在 -lSDLmain和-lSDL之后添加了-lmingw32 ,这导致了我的这个问题。
我在我的一个项目中遇到了同样的错误,我想在linux和windows上编译。我使用makefile来编译这个项目。一个对我有效的解决方案,尽管我承认它有点hack,就是将它添加到main.cpp(无论你的main函数在哪里)
extern "C" {
int WinMain(int argc, char** argv)
{
return main(argc, argv);
}
}
这会使链接器找到WinMain并将其用作程序的入口点。我也希望这个解决方案不会破坏linux的可编译性,希望它将被认为只是一个未使用的函数。
相关文章:
- Visual Studio Code "undefined reference to `WinMain@16'"
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- 我无法弄清楚"对Winmain@16错误的未定义引用"
- 使用 C++17 标准对"WinMain@16"的未定义引用
- 二叉树无法编译:错误'WinMain@16'
- 对'WinMain@16'的未定义引用 (C++)
- 未定义对"WinMain"的引用:使用 Cygwin、SDL2 和 Netbeans 时
- 未定义对“WinMain@16”的引用
- 对WinMain@16 - 代码块的未定义引用
- CodeBlocks未定义对的引用WinMain@16.
- 未定义对"WinMain@16"的引用?
- GNU GCC:尝试编译发行版时对"WinMain@16"的未定义引用(代码::Blocks)
- c++代码块错误:对SDL_PollEvent和WinMain@16的未定义引用
- 对Qt和C-Lion的"WinMain@16"的未定义引用
- SDL 2 对"WinMain@16"和多个 SDL 函数的未定义引用
- c++中对WinMain@16的未定义引用
- 对"WinMain@16"的未定义引用
- c++ -对' WinMain@16. '的未定义引用
- block, MinGW, libsdl和GNU c++编译器:对' WinMain@16的未定义引用
- 对的未定义引用WinMain@16和未知的杂注