Python的ctypes不加载在Mac OS X的dynamic库

Python的ctypes不加载在Mac OS X的dynamic库,第1张

概述Python的ctypes不加载在Mac OS X的dynamic库

我有一个C ++库repeater.so ,我可以在linux中从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中加载dynamic库?

Python ctypes:使用函数指针时的windowsError

检查一个任意的用户是否在使用Python的pipe理员组中

删除加载的pyd文件

用Python获取电池容量windows

在Python中使用GetExtendedTcptable时出错

在Python中格式化驱动器

为什么我需要__declspec(dllexport)使一些function可以从ctypes访问?

从ctypes windll获取错误消息

返回一个结构 – 32位linux时与ctypes Segfault

如何检查指针在Python中是否为空?

不。 如错误消息所示,您的python和librepeater.dylib文件之间存在体系结构不匹配。 使用file检查librepeater.dylib的体系结构是什么; 你的python将使用未列出的之一来构建。

这不仅仅是dylib中可用的体系结构的问题, Python解释器运行的体系结构也是一个问题。如果您在OS X 10.6中使用Apple提供的Python 2.6.1,则默认情况下,它将在可能的情况下以64位模式运行。 既然你说你的库被编译为32位,你需要强制Python以32位模式运行。 对于苹果提供的Python,一种方法是设置一个特殊的环境变量:

$ python -c "import sys; print sys.maxint" 9223372036854775807 $ export VERSIONER_PYTHON_PREFER_32_BIT=yes $ python -c "import sys; print sys.maxint" 2147483647

有关更多信息,请参阅Apple的man 1 python 。

总结

以上是内存溢出为你收集整理的Python的ctypes不加载在Mac OS X的dynamic库全部内容,希望文章能够帮你解决Python的ctypes不加载在Mac OS X的dynamic库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1278886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存