我有一个C++库^ {CD1>},我可以从下面的方式在Python中加载:
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.so', '.')
但是,当我在Mac OS X上编译同一个库(Snow Leopard,32位)并获取repeater.dylib
时,然后在Python中运行以下命令:
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.dylib', '.')
我得到以下错误:
OSError: dlopen(/mydir/librepeater.dylib, 6): no suitable image found. Did find:
/mydir/librepeater.dylib: mach-o, but wrong architecture
为了在Mac OS X上加载Python中的动态库,我需要做一些不同的事情吗?
这不仅仅是dylib中有哪些架构可用的问题,还关系到Python解释器运行在哪个架构中。如果您在OSX10.6中使用的是苹果提供的Python2.6.1,那么在默认情况下,如果可能的话,它将以64位模式运行。因为您说您的库被编译为32位,所以需要强制Python以32位模式运行。对于Apple提供的Python,一种方法是设置一个特殊的环境变量:
更多信息,请参见苹果的
man 1 python
。没有。正如错误消息所说,python和
librepeater.dylib
文件之间存在架构不匹配。使用file
检查librepeater.dylib
的体系结构是什么;您的python将使用未列出的体系结构之一构建。相关问题 更多 >
编程相关推荐