2015-04-24 40 views
2

在这里的任何帮助将不胜感激。 我真的绞尽脑汁,sooo。未定义的引用'WinMain':当使用Cygwin,SDL2和Netbeans

我已经安装了cygwin和Netbeans,并且已经成功地开发,编译并运行了一个没有问题的小型SDL-1.2 Windows游戏。

现在问题出现了,我已经安装了SDL2并正在尝试编译。特别是链接。

我和前面一样做了同样的工作,在Netbeans中为我的项目的链接器选项添加了“libSDL2.a”和“libSDL2main.a”;但即时获取“未定义的参考'WinMain'”错误

现在,我查看了这一点,似乎链接器不能链接我的main()函数的WinMain之一。

也看到一个答案IVE是增加“-lmingw32 -lSDLmain -lSDL”给连接器的选择,但我用的cygwin,什么mingw32.lib的cygwin的等效

我猜主要的不使用MinGW的,即时通讯问题是: 如果使用Cygwin,SDL2和Netbeans,我给链接器的选项是什么?

任何帮助将不胜感激。

+0

无论您是使用MinGW,Cygwin,本机Linux终端还是OSX,在命令行上进行链接都是一样的。 –

+0

凯,所以。在cygwin中,当我运行这个“g ++ main.cpp -lSDL2main -lSDL2”时,我得到了与'WinMain'完全相同的未定义引用“。这完全与netbeans分开。 – Tristus

+0

在Cygwin和MinGW中,这些库是为POSIX环境(显然)构建的,这意味着它不具有Windows主要功能,并且您需要创建自己的'WinMain'函数,然后调用由函数提供的'main'函数'SDL2main'库。 –

回答

5

您是否使用#undef main infront of your main进行过测试?

/* 
* If 'main' is defined we clear that definition 
* to get our default 'main' function back. 
*/ 
#ifdef main 
# undef main 
#endif /* main */ 

int main(int argc, char** argv) 
{ 
    // ... 
    return 0; 
} 

Using Netbeans with Cygwin and SDL, including SDL.h creates strange error


还可以帮助:

我得到 “未定义参考 '的WinMain @ 16'”

在Visual C++,您需要与SDL2main.lib链接。 下的gcc编译环境包括开发-C++,你需要的 “SDL-配置--libs” 输出,通常是链接:-lmingw32 -lSDL2main -lSDL2 -mwindows

http://wiki.libsdl.org/FAQWindows#I_get_.22Undefined_reference_to_.27WinMain.4016.27.22

+0

好吧,所以添加#ifdef主#undef主#endif工作。然而,我确实在某处读到这是一个混乱和讨厌的工作,如果我真的明白了这是为什么,它实际上做了什么,我会感觉更好? – Tristus

+0

我想这是因为窗户需要一些额外的设置。最好你看看sdl main的实现。 – ollo

0

对于我刚刚建立与Cygwin的图书馆,我增加了以下编译器标志:

-shared -Wl,--out-implib,lib$(LIB_NAME).dll.a 

这让我在没有可怕的“缺少的WinMain”错误信息的情况下构建我的库。

相关问题