Python无法在64位窗口上加载64位DLL



i wa测试一个小的python程序,该程序称为基础dll libs。

我的系统是64位Windows 7. Python可执行文件是带有64位Anaconda3的python,在Anaconda的虚拟环境中启动。

我注意的第一件事是该代码

sys.platform

返回Win32即使对于AMD64 Arch," Platform.machine(("似乎返回了更准确的结果。

Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] on win32

我确实找到了一些关于讨论此问题的文章,例如这个问题。

试图加载DLL文件时该程序失败:

windll.LoadLibrary(realpath(join(_module_location, 'dlh', 'win64', 'I_cant_tell_you_the_name.dll')))

错误消息:

OSError: [WinError 193] %1 is not a valid Win32 application

问题是,为什么Python无法在64位环境中加载64位DLL?在我看来,编译器坚持要加载32位DLL。这是为什么?或Anaconda创建的VENV仅支持32位代码?

不幸的是,我没有32位DLL进行测试,否则我想看看如何进行。

您可以使用依赖关系沃克检查发生了什么。它具有分析功能,可以追踪所有库负载。

一些可能的问题可以向您展示:

  1. python是32位,因为执行了错误的版本
  2. dll是32位以某种方式
  3. dll取决于不在路径中的其他dll

最新更新