使用CDLL lib(或其他)在Debian 64bit上使用python访问32位

时间:2015-12-11 10:36:33

标签: python ubuntu debian 32bit-64bit ctypes

我正在尝试在64位Ubuntu中访问32位C编译的lib。我正在使用python和CDLL lib来实现它,但到目前为止还没有成功。我可以轻松地在32位操作系统上打开相同的32位lib,在64位操作系统上打开64位版本。

所以,我要问的是,如果有人知道封装/沙箱/封装lib的方法,那么我就可以实现我的目标。这样我就可以使用一个64位服务器来访问这些库的32位和64位版本。

如果有人知道另一个可以制作技巧的python lib,请告诉我。

2 个答案:

答案 0 :(得分:0)

我不确定你是否可以在同一个过程中执行此操作 - 我们在这里谈论算术:32位指针与64位指针不同,所以试图在同一个过程中引用它们......好吧,我不确定尝试访问无法访问或不应访问的内存区域时会发生什么(我猜分段错误?)。

我能想到的唯一解决方案是在自己的进程中运行一个单独的Python 32位实例。然后,使用某种形式的IPC,您可以从64位实例调用python32位实例。

答案 1 :(得分:0)

(除了疯狂的黑客攻击)

您必须有一个32位进程才能加载32位库并调用其函数。

您可以在Debian上使用本机64位版本并行安装32位版本的Python。

参见例如这个问题:https://askubuntu.com/questions/29253/how-can-i-install-a-32bit-python-on-64-bit-ubuntu

使用pyenv的小黑客:https://github.com/yyuu/pyenv/issues/66

或者安装二元pypy版本:http://pypy.org/download.html#default-with-a-jit-compiler