在使用 Python 3.10.2 x64 的 Win10 PC 上花了 2 天时间解决了同样的问题。
简单代码:
导入操作系统
导入系统
导入 ctypes
aqui = os.getcwd()
打印(水)
os.add_dll_directory(aqui)
如果 os.path.exists('LibFT260.dll'):
print('找到 LibFT260.dll。')
别的:
print('找不到 LibFT260.dll。')
退出()
ft = ctypes.windll.LoadLibrary('LibFT260.dll')
打印(ft.FT260_GetChipVersion)
错误行:ft = ctypes.windll.LoadLibrary('LibFT260.dll') with or w/o '.dll' suffix.
我将 LibFT260.dll 放在工作目录中(我在其中调用 python 脚本)和
代码将该路径添加到 os.add_dll_directory。这些是 2
互联网上提到的主要修复;都没有用。
[仅供参考:唯一可行的 ctypes 库加载语句是
ft = ctypes.WinDLL('LibFT260.dll', winmode = 1)
Microsoft LoadLibraryEx 文档说不要使用 winmode = 1,它只是为了向后兼容,所以我改为 winmode = 48,这是建议的一种替代方法。
(我从未尝试过 None,但 0 总是失败,所有其他非零都有效。)]
我在第二台 PC 上运行了与上面完全相同的程序,并且 LoadLibrary() 函数起作用了!
详情及解决办法:
机器 2 LoadLibrary() 工作
联想 P53s x64
Win10 21H2 build 19044.1526
Python 3.9.0 (x64)
机器 1 LoadLibrary() 不工作
联想 W530 x64
Win10 20H2 build 19042.1586
Python 3.10.2 (x64)
试过 Python 3.9.0 (x64) 还是不行。
然后我注意到机器之间的许多 Visual C++ 差异。
P53 安装了更多的 Visual C++ 版本。
当我在 W530 上匹配这些版本时,上面的代码在机器 1 上运行。
我不知道我拥有哪些版本以及添加了哪些新版本,但这个列表有效:
(我现在在机器 1 上同时拥有下面列出的所有 x64 和 x86 版本。)
Microsoft Visual Studio C++ 版本 2005 Redistributable(MFC 安全更新)
2008 版(版本 9.0.30729.6161)
2010 版(10.0.40219 版)
2013 版(12.0.40664 版)
版本 2015-2022(版本 14.31.31103)
所有这些版本在 2022 年 3 月 16 日仍可从 Microsoft 获得。
我希望这可以帮助其他人解决这个非常令人沮丧的问题。