2013-07-29 57 views
0

我包括靜態庫,「libChild.a」到第二個靜態庫,「libParent.a」頭一個靜態庫靜態庫,然後鏈接兩個孩子家長到我的主要應用,但是獲得在孩子中定義的父符號中的「未定義參考」。我使用netbeans 7.0創建兩個靜態庫,然後將.a文件複製到/ usr/lib並將頭文件複製到/ usr/include。我使用netbeans項目屬性將這兩個庫添加到主項目。包括在NetBeans

有趣的是,小孩圖書館直接在主項目代碼單獨使用,而這些引用編譯就好了。只有父級靜態庫內的子級用法會導致未定義的引用錯誤。

一個解決方案是使用「ar」工具合併靜態庫。不幸的是,這是不切實際的,因爲每個版本都有多個版本,並且必須分別對每個組合進行合併,一個變化是在任何一個版本進行的每一次合併..

那麼,爲什麼在NetBeans中生成做主代碼內的孩子符號引用正確的鏈接,但不是在靜態母庫的代碼?我如何得到這個工作?

回答

1

恰好碰到了同樣的問題,這是基於一種誤解。

其實靜態庫不鏈接互相反對,相反,他們都是由他們的父應用程序連接在一起。

解決方法很簡單,只需添加所需的所有庫主應用程序的連接配置。父母/子女關係不重要。

(在netbeans:properties/linker/libraries/addLibraryFile中)