在Mac OS X上加载带有新链接列表映射的动态库 我有一个C++代码,它通过DLMPEN()函数加载LMYIDIONEXLLM LMIDYT的动态库。该代码在Linux上按预期编译和工作,但在Mac OS上失败。我很难用dlopen()函数获得相同的行为。在谷歌上的广泛搜索并没有发现任何明显的问题解决方案。使用的建议

在Mac OS X上加载带有新链接列表映射的动态库 我有一个C++代码,它通过DLMPEN()函数加载LMYIDIONEXLLM LMIDYT的动态库。该代码在Linux上按预期编译和工作,但在Mac OS上失败。我很难用dlopen()函数获得相同的行为。在谷歌上的广泛搜索并没有发现任何明显的问题解决方案。使用的建议,c++,macos,shared-libraries,dynamic-loading,C++,Macos,Shared Libraries,Dynamic Loading,dlopen(“somesharedlibrary.dylib”,RTLD|U NOW | RTLD|U GROUP | RTLD|U LOCAL) 不起作用,因为达尔文不承认RTLD_组选项。有没有办法在Mac OS X上加载带有新链接列表映射的动态库?不幸的是,没有,在Mac OS X上没有办法加载动态库,但为什么要这样做?i、 e.什么东西要求您使用单独的链接映射?如果您在新平台上编译,您应该能够控制正在使用的库,从而最大限度地减少对同一库的多个版本的使用,这是单独链接映射的主要原因之一。

dlopen(“somesharedlibrary.dylib”,RTLD|U NOW | RTLD|U GROUP | RTLD|U LOCAL)


不起作用,因为达尔文不承认RTLD_组选项。有没有办法在Mac OS X上加载带有新链接列表映射的动态库?

不幸的是,没有,在Mac OS X上没有办法加载动态库,但为什么要这样做?i、 e.什么东西要求您使用单独的链接映射?如果您在新平台上编译,您应该能够控制正在使用的库,从而最大限度地减少对同一库的多个版本的使用,这是单独链接映射的主要原因之一。@Petesh我正在尝试加载同一库的两个独立实例。例如:somesharedlibrary.dylib应该动态加载两次并单独初始化。如何在Mac OS X上实现这一点?要在Mac OS X中实现这一点,请显式链接到库,确保.dylib引用要使用的显式库,并使用RTLD_LOCAL进行加载。但是,如果一个库预期会被多次加载,并且依赖操作系统欺骗(这真的是欺骗)将其加载到一个单独的链接空间中,那就是自找麻烦。