对本机环境中使用 SDL 编译进行'WinMain'的未定义引用
undefined reference to 'WinMain' with SDL compiling in a native enviroment
我正在努力学习SDL的第一步。我想编译一个简单的测试类,只包括SDL2头文件,对于启动没有什么特别的:
main.cpp:
#include <SDL.h>
int main() {
return 0;
}
main.cpp本身编译得很好:g++ -c main.cpp -ISDL/include
,但只要我想链接它与SDL2.dll或与机器码主。或者直接,我得到这个错误:g++ main.cpp -o sdl_test -I SDL/include -L SDL/lib/x64 -l SDL2 -mwindows
g++ -o test main.o -L SDL/lib/x64 -l SDL2 -mwindows
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../lib/libcygwin.a(libcmain.o): In function `main':
/usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/lib/libcmain.c:39: undefined reference to `WinMain'
/usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/lib/libcmain.c:39:(.text.startup+0x7e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `WinMain'
collect2: Fehler: ld gab 1 als Ende-Status zurück
附加信息:我使用Cygwin和g++来编译我的c++代码。我的操作系统是Windows 7 Professional 64Bit SP 1.
我用谷歌搜索了几个小时,但我遇到的所有结果都说使用-mwindows
来编译一个非控制台应用程序或其他无法工作的东西。
当你使用SDL
时,你的main()
必须看起来像int main(int, char **)
(或int main(int argc, char **argv)
)。
为什么?因为在SDL代码的某个地方你可以找到
int SDL_main(int, char **);
int main(int argc, char **argv)
{
/*Some stuff.*/
SDL_main(argc, argv);
/*Some stuff.*/
}
然后,在SDL.h
内:
#define main SDL_main
相关文章:
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- 我无法弄清楚"对Winmain@16错误的未定义引用"
- 对WinMain(C++ MinGW)的未定义引用
- 使用 C++17 标准对"WinMain@16"的未定义引用
- C++,wxWidgets,TDM-GCC编译器:驱动器H:中对WinMain的未定义引用
- 对'WinMain@16'的未定义引用 (C++)
- 未定义对"WinMain"的引用:使用 Cygwin、SDL2 和 Netbeans 时
- 未定义对“WinMain@16”的引用
- 对WinMain@16 - 代码块的未定义引用
- CodeBlocks未定义对的引用WinMain@16.
- 未定义对"WinMain@16"的引用?
- GNU GCC:尝试编译发行版时对"WinMain@16"的未定义引用(代码::Blocks)
- 需要避免在需要使用链接器脚本 *.ld 文件的静态库中对"WinMain"进行未定义的引用
- 对"WinMain"的未定义引用与cygwin和cmake。
- c++代码块错误:对SDL_PollEvent和WinMain@16的未定义引用
- 对Qt和C-Lion的"WinMain@16"的未定义引用
- SDL 2 对"WinMain@16"和多个 SDL 函数的未定义引用
- c++中对WinMain@16的未定义引用
- LNK2019:使用WinMain时,在函数__tmaincrtstartup中引用的未解析的外部符号_main错误
- 对本机环境中使用 SDL 编译进行'WinMain'的未定义引用