我正在测试一个名为底层DLL库的小型python程序。
我的系统是64位Windows7。python可执行文件是64位Anaconda3附带的一个可执行文件,它在Anaconda的虚拟环境中启动。
首先引起我注意的是这段python代码
sys.platform
即使对于AMD64 Arch也返回win32,“ platform.machine()”似乎返回了更准确的结果。
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] on win32
我确实找到了一些讨论此问题的SO帖子,例如this one。
,然后在尝试加载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,否则我想看看效果如何。
答案 0 :(得分:0)
您可以使用Dependency Walker检查正在发生的事情。它具有概要分析功能,可以跟踪所有库负载。
它可能会向您显示一些可能的问题: