我的問題是這樣的:C++異常
有一個叫Interface.so共享庫,它是基於ICE(互聯網通信引擎)和類似的經常重複的任務的包裝。其中一項任務是註冊一個主題(類似於一個id)。如果該主題不存在,則ICE將引發一個名爲NoSuchTopic的異常。
如果我將Interface.so與獨立的Qt應用程序一起使用,可以捕獲NoSuchTopic異常並在catch塊中創建主題(catch塊駐留在Interface.so中)。 但是我想在一個飛行模擬器的插件中做同樣的事情,這個模擬器本身就是一個共享對象 - 這裏的異常並沒有被前面提到的Interface.so中的catch塊捕獲。 相反,飛行模擬器崩潰,說明
terminate called after throwing an instance of 'IceStorm::NoSuchTopic'
納米-C -D說, '冰雪風暴:: NoSuchTopic' 在Interface.so不確定。這個可以嗎?或者應該有一個參考在哪裏找到定義?我已經添加了libIceStorm.so(libs + = -lIsStorm)的條目,其中IceStorm :: NoSuchTopic被定義(根據nm),但不會改變任何東西!
我也試過'-Wl,-E'但我不知道是否在Qt Creator中正確設置了這個選項。這會有所幫助嗎?
我會感激每一個提示。
感謝您的回答。不幸的是,我在發佈之前嘗試了所有建議(我的「-Wl,-E」來自鏈接的答案)。但是,最後我的同事解決了這個問題。顯然,Ubuntu儲存庫中用於ICE的GCC版本與Ubuntu 11.10默認GCC不同,因此通過從源代碼重新編譯ICE解決了該問題。 – Markus 2012-01-18 20:58:45