我有很多靜態庫。一個是static_lib_a.a。我創建了一個動態庫dynamic_lib.so將它們放在一起。dynamic_cast在隱藏符號時失敗
在static_lib_a.a中,它使用xerces 3.1.1來分析xml。以下是在static_lib_a.a
xerces::DOMElement *pElementNode = dynamic_cast<xerces::DOMElement *>(pNode);
代碼段的類型pNode的是的xerces ::的DOMNode。它被分配給xerces :: DOMElement的一個對象。這行代碼將會向下轉換。
爲了隱藏dynamic_lib.so中的static_lib_a.a的所有符號,我使用-fvisibility = hidden來構建這個靜態庫。我發現如果我添加 - fvisibility =隱藏,pElementNode將在運行時返回一個NULL指針。
gcc編譯器的版本是3.4.4。
有沒有人有過類似的問題?
你的編譯器很舊。你有沒有嘗試使用新版本的gcc編譯你的代碼? – 2011-02-25 11:53:06
我不能這樣做,因爲其他舊模塊是在gcc中構建的3.4.4 – 2011-02-25 12:58:12