2015-12-05 103 views
0

我對C++沒有經驗,但對python有合理的經驗。我試圖加載一個dll庫,並着手如下,根據在另一個線程的指令:無法在python中加載dll文件(3.4)

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

該DLL是否也是64位?如果是這樣,你確定你使用的是64位版本的Python嗎? DLL和Python解釋器都必須是32位或64位。 – SwedishOwlSerpent

回答

2

如果該DLL存在並且被發現,則可能是32位和64位之間不匹配。對於C++應用程序,可執行文件和加載的dll必須是相同的體系結構(32位或64位),這同樣適用於Python可執行文件。這意味着如果你運行64位Python,它可能無法加載32位DLL,反之亦然(實際上有一種方法可以通過創建32位輔助程序並使用IPC來實現,但我不確定如果Python那樣)。

I.e.檢查dll和可執行文件(Python)是否具有相同的體系結構(比特大小)。

+0

非常感謝E!是的,那就是問題 - 32位和64位之間確實存在不匹配。 –