首页 > 解决方案 > 在 64 位 Python 进程中加载​​ 32 位和 64 位 dll

问题描述

我有一个 python 脚本(在 Windows 上),它取决于相应的 32 位 dll 和 64 位 dll 的不同包装器。有没有办法,比如沙盒机制,可以让我从同一环境(64 位 python 进程)加载 64 位 dll 和 32 位 dll?

为了进一步理解,这里有一个例子:假设我有一个 python 脚本 test.py。test.py 正在调用 fun1 和 fun2。fun1 在 fun1_test.pyd(32-bit) 中定义,而 fun2 在 fun2_test.pyd(64-bit) 中定义。

这是我尝试过的:由于 64 位环境可以理想地运行 32 位 dll,我尝试使用 64 位 python 进程执行 python 脚本。但我注意到以下错误:“WindowsError: [Error 193] %1 is not a valid Win32 application”

当我运行依赖walker时,它提供了对CPU(x86 vs x64)不匹配dll的引用。

有没有更清洁的方法来实现这一目标?

标签: pythonpython-3.xpython-2.7

解决方案


我认为不可能从 64 位进程导入 32 位 dll。指针大小不同。

最容易找到 64 位版本并使用它。

这不是 python 特定的,但这个问题解释了这个问题:Convert 32 bit dll to 64 bit dll

这是一篇文章,作者反编译了一个 32 位程序并将其重写为 64 位: http: //www.developingthefuture.net/disassemble-decompiling-and-modifying-executables/ 虽然这不是 python dll。

(我也将此标记为重复项,也只是想提供一些建议。如果这不正确,请告诉我。)


推荐阅读