Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error loading DLL in python, not a valid win32 application [duplicate]

Tags:

python

dll

ctypes

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?

like image 960
jeffpkamp Avatar asked Nov 07 '13 23:11

jeffpkamp


1 Answers

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.

like image 164
ABM Avatar answered Oct 11 '22 20:10

ABM