我的问题是这样的: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