远程Linux机器上的RTTI检查失败

时间:2013-09-24 15:10:11

标签: c++ linux qt xming

我在项目中使用C ++ / Qt,我正面临这个奇怪的问题。

我的应用程序在任何本机Linux机器和Windows上运行良好。当我使用远程Linux机器执行我的程序并使用X Windows服务器(我使用Xming)来查看/使用它时出现问题。调试器指向dynamic_cast无法获取对象指针的行(转换返回一个很好的NULL)而不是我想要的实际对象。

我怀疑在启用这些运行时检查时必须缺少一些配置问题。

任何人都遇到过这样的问题,欢迎任何有关解决方案的指示。

2 个答案:

答案 0 :(得分:0)

你是如何联系的?我们的Java遇到了类似的问题 插件。如果dynamic_cast与DLL不同 构造对象的DLL,必须设置RTLD_GLOBAL 在加载DLL时调用dlopen。如果是DLL 隐式加载,是否设置将取决于它如何 为DLL触发加载设置(这意味着你 可能无法控制它)。最后,我们必须确保这一点 没有 .so被隐式加载(通过让Java加载一个特殊的 loader DLL,它显式地加载了所有内容 依赖顺序)。

请注意,这可能不是您的问题;我只是猜测,因为 我没有足够的信息。但我们完全一样 症状。

答案 1 :(得分:0)

好的,经过大量的试验,这就是解决方案。

我需要使用明确导出接口类 的属性((可见性( “默认”))) 并确保vtable中有一个条目,为此定义并清空虚拟析构函数。

似乎在某些linux机器上,如果我不导出它不识别RTTI,并返回NULL。