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进行测试,否则我想看看如何进行。
您可以使用依赖关系沃克检查发生了什么。它具有分析功能,可以追踪所有库负载。
一些可能的问题可以向您展示:
- python是32位,因为执行了错误的版本
- dll是32位以某种方式
- dll取决于不在路径中的其他dll