問候。如何解決未解決的符號?
我有我的lib動態鏈接到我的程序有問題。 以下是發生了什麼:我正在開發一個模塊化程序並測試模塊系統。事情是我的模塊使用了一些在主要二進制文件中定義的類:一些抽象類,它們不會引起任何問題,還有一個非常具體的類,它們無法解決。
我使用的dlopen/dlsym進行/ dlclose的功能集。 而我使用g ++進行編譯。
的事情是:如果我問的dlopen加載所有的符號,那麼它沒有告訴我"undefined symbol: _ZNK3zia3api8DataTreecvRKSsEv
但是,如果我在懶惰模式推出dlopen的,它只會在所謂類的第一次使用發生(和在那之後崩潰)。
因此,這是「的Datatree」類的,我希望把它同時適用於主二進制和模塊。 我已經試着在每個二進制文件中進行編譯:正如我所料,它不起作用。 我也嘗試完全內聯,但它和我的其他嘗試一樣沒用。 我試圖用選項「-rdynamic」編譯主二進制文件。沒有變化。
我一直在尋找,詢問朋友從昨天開始,但似乎沒有人知道如何解決這類問題。
我編譯模塊的對象的選項-fPIC,像這樣:
g++ -Wall -fPIC -c mysource.cpp
然後我用這條線使圖書館:
g++ -shared -Wl,-soname,mylib.so.1 -o mylib.so mysource.o
我想最好的解決辦法將不會編譯庫中的對象,而是從主二進制文件中提供該符號。 所以問題是:怎麼做? (這是我必須做的嗎?)
demangled name是zia :: api :: DataTree :: operator std :: string const&()const – 2011-04-13 12:34:59
您可以使用'C++ filt'實用程序(在linux上)獲取demangled名稱。調用只是'C++ filt _ZNK3zia3api8DataTreecvRKSsEv',結果是@Industrial發佈的內容。非常便利! – 2011-04-13 12:37:56
好主!這確實是不確定的!我沒有注意到它!非常感謝 ! – Michael 2011-04-13 12:44:00