2012-09-16 55 views
0

我在我的構建腳本使用this Premake4 script for wxWidgets時:引用錯誤鏈接wxWidgets的靜態

wx_config {Unicode="yes", Version="2.9", Libs="core,aui,media,html", WindowsCompiler="gcc", Static="yes"} 

但代碼塊分別MinGW的產出許多錯誤:

wx\lib\gcc_lib/libwxbase29u.a(baselib_filename.o):filename.cpp:(.text+0x5371): undefined reference to `[email protected]' 
wx\lib\gcc_lib/libwxbase29u.a(baselib_filename.o):filename.cpp:(.text+0x5390): undefined reference to `IID_IPersistFile' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7cc9): undefined reference to `wxEVT_POWER_SUSPEND_CANCEL' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7cf9): undefined reference to `vtable for wxPowerEvent' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d55): undefined reference to `wxEVT_POWER_SUSPENDED' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d61): undefined reference to `wxEVT_POWER_SUSPENDING' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d6d): undefined reference to `wxEVT_POWER_RESUME' 
wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7f18): undefined reference to `vtable for wxPowerEvent' 
... 

你可以在這裏看到所有的鏈接錯誤:http://pastebin.com/UGSRg4DX

有人提到一個wxWidgets的bug報告(鏈接丟失)那個庫訂單造成這個問題。但他沒有說哪個圖書館必須先放。

回答

2

這看起來像this one完全一樣的問題。即您需要按照正確的順序將庫存放在預製腳本中:aui,media,html,core(重要的是「核心」是最後一個)。另外,我不知道它是否可以隱式附加,但通常你最終還需要「基礎」。

+0

謝謝。我在Codeblocks中的庫命令是'wxpngd,wxzlibd,wxmsw29ud_adv,wxmsw29ud_core,wxbase29ud',但是現在我得到了'ImageList_ *'和'png_ *'函數的未定義引用錯誤。 – ComFreek

+0

'ImageList_'來自標準的'comctl32.lib'庫。 'png_'當然是'libpng'。你需要鏈接兩個(並把它們放在最後)。 –

+0

'libpng'與'wxpngd'相同嗎?我已經把它們都放到Codeblocks中的庫列表中,但現在我得到了未定義的'OleInitialize'參考錯誤。 – ComFreek