繁体   English   中英

在本机环境中使用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

但是一旦我想用机器码main.o或直接将它与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搜索了几个小时,但是遇到的所有结果都使用-mwindows来编译非控制台应用程序或其他-mwindows问题。

使用SDLmain()必须类似于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM