用CodeBlocks編譯一個wxWidgets應用程序時,總是出現"undefined reference"。這里有兩個問題,一是需要添加wxWidgets相關的庫,二是這些庫要按一定的順序列出。
在wxWidgets的lib目錄下查找報錯的未定義函數,就可以找到那些需要的庫。
但是庫的排列順序是有關系的,順序錯誤仍會有"undefined reference"報告。如果程序引用了libA.a,libA.a又引用了libB.a,則gcc鏈接時,庫A應排在庫B的前面。但是wxWidgets有這么多庫文件,如何排列它們的順序呢?
我利用了CodeBlocks的wxWidgets工程向導,生成一個工程,把所有的庫都選上,這樣就排出了一個wxWidgets庫的順序。
<Add library="libwxmsw28_richtext.a" /> <Add library="libwxmsw28_xrc.a" /> <Add library="libwxmsw28_dbgrid.a" /> <Add library="libwxbase28_odbc.a" /> <Add library="libwxmsw28_media.a" /> <Add library="libwxbase28_net.a" /> <Add library="libwxmsw28_gl.a" /> <Add library="libwxmsw28_qa.a" /> <Add library="libwxbase28_xml.a" /> <Add library="libwxmsw28_adv.a" /> <Add library="libwxmsw28_html.a" /> <Add library="libwxmsw28_core.a" /> <Add library="libwxbase28.a" /> <Add library="libwxpng.a" /> <Add library="libwxjpeg.a" /> <Add library="libwxtiff.a" /> <Add library="libwxzlib.a" /> <Add library="libwxregex.a" /> <Add library="libwxexpat.a" />
還是有#pragma comment(lib, "XXX.lib")自動鏈接的好,不必關心這種庫依賴性。
(轉載請注明來源于金慶的專欄)
Powered by: C++博客 Copyright © 金慶