python - 在 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的引用。
有没有更清洁的方法来实现这一目标?
解决方案
我认为不可能从 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。
(我也将此标记为重复项,也只是想提供一些建议。如果这不正确,请告诉我。)
推荐阅读
- python - 如何将图像划分为 3 个簇,并找到每个簇中心点的像素坐标?
- vue.js - 使用正则表达式验证 Vue 应用程序的所有输入字段
- excel - Excel - 我想创建插入新列时不会改变的绝对引用
- php - Extjs 3 如何在不刷新屏幕的情况下删除图表并显示新图表
- xcode - 即使在拉取完成后,推送代码时本地存储库也已过期
- python - Optuna 从“外部”传递参数字典
- flutter - Flutter:如何创建可移动的小部件
- apache - Apache / Wampserver 允许公共 Web 服务器使用 https
- python - 从 NETCDF 文件中提取数据
- amazon-web-services - 在 AWS 上找不到免费套餐使用情况