我的问题如下:
有一个名为 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'
nm -C -D 表示“IceStorm::NoSuchTopic”在 Interface.so 中未定义。这个可以吗?或者应该有一个参考在哪里可以找到定义?我已经添加了 libIceStorm.so (libs += -lIceStorm) 的条目,其中定义了 IceStorm::NoSuchTopic(根据 nm),但这并没有改变任何东西!
我也试过'-Wl,-E',但我不知道我是否在 Qt Creator 中正确设置了这个选项。这会有帮助吗?
我会很感激每一个提示。