This works fine on Windows 7 with Python 2.7:
lib = ctypes.cdll.LoadLibrary('prov_means')
provmeans = lib.provmeans
The library prov_means.DLL is in my working directory. It exports a simple, stand-alone C function provmeans() with no dependencies.
When I try the same thing on Windows XP and Python 2.7 I get
Traceback (most recent call last):
File "D:\python\Auxil\src\auxil.py", line 130, in <module>
lib = ctypes.cdll.LoadLibrary('prov_means')
File "C:\Python27\lib\ctypes\__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "C:\Python27\lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found
I have tried copying the DLL to Windows\System32 and also entering the full path name
"d:\\python\\auxil\\src\\prov_means"
with and without the ".DLL" extension. Nothing works.
Error 126 is what you get when a dependent DLL can not be found. There are two obvious causes for this:
I doubt that option 1 is the problem but in any case I think I would probably be using a full path to that DLL to be sure.
So that leaves option 2 and the most common cause for that is that your target machine does not have the C++ runtime installed. Either install the C++ runtime on your target machine, or use static linking, /MT
, when building your DLL so that you do not need to redistribute the runtime.
Probably, on the machine that you developed the DLL, you have installed a C++ compiler and that installed the runtime for you. On your target machine, where the code fails, you have not installed the compiler and so the runtime is not present.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With