我的Python程序调用了一个C++共享库。C++库是用HDF5编译的,我是用OS上的自制软件安装的,所以它驻留在/usr/local/lib中。现在的问题是,我还安装了PyTables,它包括一个旧版本的libhdf5,安装在/Library/Frameworks/EPD64.framework/Versions/Current/...中的某个地方
我可以很好地编译和链接我的库,而且otool -L确实指向了/usr/local/lib/libhdf5.dylib。但是,当我尝试从Python运行它时,出现了版本不匹配错误。运行时链接器以某种方式加载较旧的hdf5库。
一种解决办法是将hdf5构建为静态库,但我想找到一个更简洁的解决方案-如何说服运行时链接器使用较新的库?我已经尝试过设置DYLD_LIBRARY_PATH,但这破坏了其他一切(Python和MacVim无法启动)。
发布于 2011-03-22 06:03:01
你能提供更多的信息吗?我有几个选择(和问题)。
如果我没记错的话,您有一个使用lib_ver_a.dyld的库和一个使用lib_ver_b.dyld的pyTables库。即相同的库但不同的版本。
您可以执行以下任一操作:
你还应该检查你调用的是哪一个python (定制的还是苹果的)。
也可以在链接时定义特定的dyld (您使用的是gcc还是ld进行链接?我可能会错过这里的一些选项):
gcc /path/lib1.dyld myLib.c -o myLib.o
这样你的库就会链接到某些版本的库(注意!我不记得确切的细节,但我可以把它们找出来)。
我希望这能帮到你。
br
Juha
https://stackoverflow.com/questions/5126268
复制相似问题