我在SDL中邁出的第一步非常辛苦。 我想編寫一個簡單的測試類,只包括SDL2頭,沒有什麼特別的啓動:在本地環境中使用SDL編譯的'WinMain'未定義引用
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專業版64位SP 1。
我搜索了幾個小時,但所有結果我碰到說,使用-mwindows來編譯非控制檯應用程序或其他事情沒有解決。
由於提前
他們重新定義了'main'一些非常討厭的東西宏。在include之後試試'#undef main'來看看是否是這種情況。如果是這樣,那麼在SDL頭文件中找到定義,在這裏解釋它們如何讓人們禁用定義,並使用SDL方式來轉換該sh * t。 –
順便說一句,'-mwindows'只是指定Windows子系統並添加了一些Windows API導入庫。它與「其他不起作用的東西」無關。爲你的編譯器獲得這個選項的更詳細的視圖,在「mwindows」上執行'-dumpspecs'和過濾。 –
'#include #undef main'仍然不起作用,但標題不能成爲問題。正如我所說,文件本身與頭部編譯很好,但只要我嘗試鏈接他們,我得到這個異常 –
Matze