可加载的macOS捆绑包符号与动态库中的符号冲突

我们正在为Adobe Illustrator开发一个插件(可加载捆绑包),该插件广泛使用Bo​​ost。该插件被编译为MODULE CMake库。即add_library(ourplugin MODULE ...)

此库将静态链接到Boost。

主机应用程序(Adobe Illustrator)也使用Boost,尽管版本不同,并且应用程序捆绑包中包含Boost作为框架。

当调用包中的函数时,它会调用一些Boost序列化编译函数。事实证明,动态链接器使用应用程序随附框架中的Boost函数,而不是插件二进制文件本身中存在的版本,从而导致兼容性错误。

我们可以使用nm -gU --demangle ourplugin来确认该符号确实存在于我们的捆绑包中

当从捆绑包本身中请求动态链接器时,是否有一种方法指示动态链接器始终偏爱捆绑包中定义的符号?

iCMS 回答:可加载的macOS捆绑包符号与动态库中的符号冲突

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1724474.html

大家都在问