我的项目使用 C++/Qt,但我遇到了这个奇怪的问题。
我的应用程序在任何本地 Linux 机器和 Windows 上运行良好。当我使用远程 Linux 机器执行我的程序并使用 X Windows 服务器(我使用 Xming)查看/使用它时出现问题。调试器指向 dynamic_cast 无法获取对象指针的行(强制转换返回一个不错的 NULL)而不是我想要的实际对象。
我怀疑我必须缺少一些配置问题才能启用这些运行时检查。
任何人都遇到过此类问题,欢迎提出解决方案。
最佳答案
您是如何链接的?我们的 Java 也有类似的问题
插件。如果 dynamic_cast
与
构造对象的DLL,必须设置RTLD_GLOBAL
在加载 DLL 时调用 dlopen
。如果 DLL
被隐式加载,是否设置将取决于它是如何
为触发加载的 DLL 设置(这意味着您
可能无法控制它)。最后,我们必须确保
没有 .so
被隐式加载(通过让 Java 加载一个特殊的
加载程序 DLL,它显式加载所有内容,在
依赖顺序)。
请注意,这可能不是您的问题;我只是猜测,因为 我没有足够的信息。但我们有完全一样的 症状。
关于c++ - 远程 Linux 机器上的 RTTI 检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985389/