Error loading DLL in python, not a valid win32 application [duplicate]
I am trying to load a DLL in python to call functions.
import ctypes
from ctypes import *
dsusb = ctypes.WinDLL('c:\python27\dsusb.dll')
I get the following error in my stack.
C:\Python27>python test.py
Traceback (most recent call last):
File "test.py", line 4, in <module>
dsusb = ctypes.WinDLL('c:\python27\dsusb.dll')
File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 193] %1 is not a valid Win32 application
I also tried cdll with the same code.
I looked up the error and windows says it's due to a path containing spaces... which I do not think is really the problem...
Am I loading this DLL wrong or is there something that might be wrong in the dll?
Solution 1:
As the comments suggest, it could be an architecture problem.
If you're using a 32bit DLL with 64bit Python, or vice-versa, then you'll probably get errors.
Since I've had your error before, I recommend trying to load your DLL with 32bit Python.
One way to test if a *.dll-file is 32bit or 64bit, is to use dumpbin.exe
, e.g.
dumpbin /headers dsusb.dll
...
FILE HEADER VALUES
14C machine (x86)
...
machine (x86)
means 32bit, machine (x64)
means 64bit.
Solution 2:
I had the same issue. I fixed by compiling my C code using the VS2015 x64 Native Tools Command Prompt. Now everything is 64bit.