在64位Python进程中加载​​32位和64位dll

时间:2019-10-18 19:34:28

标签: python python-3.x python-2.7

我有一个python脚本(在Windows上),该脚本依赖于来自相应32位dll和64位dll的不同包装器。 有没有办法像沙盒机制那样,允许我从同一环境(64位python进程)中加载64位dll和32位dll?

为进一步理解,下面是一个示例: 可以说,我有一个python脚本test.py。 test.py调用fun1和fun2。 fun1在fun1_test.pyd(32位)中定义,并且fun2在fun2_test.pyd(64位)中定义。

这是我尝试过的: 由于64位环境可以理想地运行32位dll,因此我尝试使用64位python进程执行python脚本。但我注意到以下错误: “ WindowsError:[错误193]%1不是有效的Win32应用程序”

当我运行依赖项遍历器时,它会引用CPU(x86与x64)不匹配的dll。

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

1 个答案:

答案 0 :(得分:0)

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

找到并使用64位版本将是最简单的。

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

这是作者反编译32位程序并将其重写为64位的文章: http://www.developingthefuture.net/disassembling-decompiling-and-modifying-executables/ 那不是python dll。

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