无法在python中加载dll文件(3.4)

时间:2015-12-05 20:11:24

标签: python c++ dll ctypes

我对c ++没有经验,但对python有合理的经验。我正在尝试加载一个DLL库并按照另一个线程中的说明进行如下操作:

import ctypes
my_dll = ctypes.WinDLL ("c:\\whatever\\whatever.dll")

我得到的回应是:

Traceback (most recent call last):
  File "C:\Users\xxx\Anaconda3\lib\site-
    packages\IPython\core\interactiveshell.py", line 3035, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-6-8b21ed13fe33>", line 1, in <module>
    mydll = cdll.LoadLibrary(dll_path)
  File "C:\Users\xxxx\Anaconda3\lib\ctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
  File "C:\Users\xxx\Anaconda3\lib\ctypes\__init__.py", line 351, in __init__
    self._handle = _dlopen(self._name, mode)
    OSError: [WinError 193] %1 is not a valid Win32 application

操作系统是64位Windows 10。 有人能指出我的错误吗?

感谢。

1 个答案:

答案 0 :(得分:2)

如果存在并且找到了dll,则可能是32位和64位之间存在不匹配。对于C ++应用程序,可执行文件和加载的dll必须是相同的体系结构(32位或64位),这同样适用于Python可执行文件。这意味着如果你运行64位Python,它可能无法加载32位dll,反之亦然(实际上有一种方法可以通过创建帮助程序32位进程并使用IPC来实现,但我可以不确定Python是否这样做。)

即。检查dll和可执行文件(Python)是否都是相同的体系结构(位大小)。