我们正在为Adobe Illustrator开发一个插件(可加载捆绑包),该插件广泛使用Boost。该插件被编译为MODULE
CMake库。即add_library(ourplugin MODULE ...)
此库将静态链接到Boost。
主机应用程序(Adobe Illustrator)也使用Boost,尽管版本不同,并且应用程序捆绑包中包含Boost作为框架。
当调用包中的函数时,它会调用一些Boost序列化编译函数。事实证明,动态链接器使用应用程序随附框架中的Boost函数,而不是插件二进制文件本身中存在的版本,从而导致兼容性错误。
我们可以使用nm -gU --demangle ourplugin
来确认该符号确实存在于我们的捆绑包中
当从捆绑包本身中请求动态链接器时,是否有一种方法指示动态链接器始终偏爱捆绑包中定义的符号?