C++ 运行时共享库能否调用现有符号?
我有:C++ 运行时共享库能否调用现有符号?,c++,symbols,dylib,C++,Symbols,Dylib,我有: 应用程序A 动态库D 静态库S 其中: A在编译时与静态库S链接 D在编译时不链接S,但使用其头文件 A使用dlopen在运行时加载D 在A中运行时,D是否可以使用S中定义的符号,而不必在自己的编译时将D与S链接?即D能否访问全局命名空间中的符号 其他说明: 我需要D和A都能从S调用函数。 理想情况下,我不想改变S 我已经尝试过了,我得到了(当在D中使用来自S的符号时): 我认为这可能是: 现有函数“myFunction(int)”对共享库不可用(安全性?) 此函数的符号名称以不
- 应用程序A
- 动态库D
- 静态库S
- A在编译时与静态库S链接
- D在编译时不链接S,但使用其头文件
- A使用
在运行时加载Ddlopen
extern“C”
进行测试并排除此情况)如果问题是名称损坏,请尝试在
myFunction
的函数声明中使用extern“C”
禁用名称损坏。谢谢Radek,我现在根据您的建议排除了这种情况。这一定是一个符号可访问性问题。好的,这就解决了它!谢谢你!但我现在透露了下一个问题:应用程序中以前未使用的符号在链接阶段不包括在内。有免费的旗子吗--整个档案似乎是前进的方向,但还没有工作。
dyld: lazy symbol binding failed: Symbol not found: __Z14myFunctioni