gpt4 book ai didi

c++ - 函数没有被执行

转载 作者:太空狗 更新时间:2023-10-29 23:19:10 24 4
gpt4 key购买 nike

我想了解以下场景到底发生了什么。我有一个共享库(A),它通过动态加载加载另一个共享库(B)。库 A 也公开了一些方法 (F1)。

主程序加载库 A,然后库 A 在稍后加载库 B。现在,当库 B 尝试使用库 A 中的函数 F1 时,它无法加载其符号,并且编译会静默停止执行,而不会给出任何警告/错误或核心。即使我可以看到从库 A 中导出的这些符号(使用 nm 命令)。我不太确定到底发生了什么。我在 Linux.64 上观察到这一点。Windows 工作的相同场景。

最佳答案

我的通灵调试能力告诉我,因为您将其标记为 C++,所以您正在编译 C++ 代码。我还猜测您使用了稍微不同的选项来编译库 A 和 B,导致它们的名称修饰和/或 ABI 不兼容,因此找不到方法。

您是否考虑过让链接器将所有共享对象应用到您的应用程序而不是使用 dlopen?然后您会立即知道存在问题,因为链接器无法匹配符号。

或者,也许 Linux 只是不喜欢您的循环库引用:您能否重构您的库以消除循环依赖?

关于c++ - 函数没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com