用CodeBlocks編譯一個(gè)wxWidgets應(yīng)用程序時(shí),總是出現(xiàn)"undefined reference"。這里有兩個(gè)問(wèn)題,一是需要添加wxWidgets相關(guān)的庫(kù),二是這些庫(kù)要按一定的順序列出。
在wxWidgets的lib目錄下查找報(bào)錯(cuò)的未定義函數(shù),就可以找到那些需要的庫(kù)。
但是庫(kù)的排列順序是有關(guān)系的,順序錯(cuò)誤仍會(huì)有"undefined reference"報(bào)告。如果程序引用了libA.a,libA.a又引用了libB.a,則gcc鏈接時(shí),庫(kù)A應(yīng)排在庫(kù)B的前面。但是wxWidgets有這么多庫(kù)文件,如何排列它們的順序呢?
我利用了CodeBlocks的wxWidgets工程向?qū)?,生成一個(gè)工程,把所有的庫(kù)都選上,這樣就排出了一個(gè)wxWidgets庫(kù)的順序。
<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")自動(dòng)鏈接的好,不必關(guān)心這種庫(kù)依賴性。
(轉(zhuǎn)載請(qǐng)注明來(lái)源于金慶的專欄)
Powered by: C++博客 Copyright © 金慶