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

标签 c++ linux qt xming

我的项目使用 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/

相关文章:

c++ - 从使用 numpy.save(...) 保存的文件中将 numpy 数组加载到 C 中

c++ - 在 C++11 中,如何调用 new 并为对象预留足够的内存?

python - 如何使用python脚本编辑sudo权限linux文件

c - 我如何在 Geany 中调试 C?

c++ - 重载函数和可执行文件/库的大小

c - 在 Linux C 中同步读取文件

c++ - 未加载 Qt ODBC 驱动程序

c++ - Qt类及其成员之间的循环依赖

qt - 在 QListView 的 QWidgetDelegate 的 paint() 方法中渲染 QWidget

c++ - 如何在方 block 世界中使用四叉树/八叉树