Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use 32bit dll or exe in 64bit python?

Tags:

When I use CDLL to call 32bit dll in 32bit python, it works well. But unfortunatelly in my 64bit win7 os only installs 64bit python, when calling it turns: it is not a effective win32 app!

Can I use 32bit dll or exe in 64bit python? Or I have to install 32bit python instead?

like image 840
hjhnju Avatar asked Jul 25 '12 03:07

hjhnju


People also ask

Can 64 bit Python load 32-bit DLL?

64-bit EXEs cannot load 32-bit DLLs. (And vice versa: 32-bit EXEs cannot load 64-bit DLLs.)

What is the difference between 32-bit and 64 bit DLL?

If the first DLL in the path is 32 bit and your app is 32 bit, then the DLL load will work. If the app is 64 bit, it will fail to load the DLL and the process will abort. If you want two DLLs to coexist on the system path, you need to give them unique file names.


1 Answers

64-bit EXEs cannot load 32-bit DLLs. (And vice versa: 32-bit EXEs cannot load 64-bit DLLs.) After all, they can't agree on the size of a pointer -- what would happen if the EXE allocated memory above the 4GB boundary and wanted to pass that pointer to the 32-bit DLL?

You'll have to either:

  1. Make a 64-bit version of your DLL;
  2. Use a 32-bit version of Python; or
  3. Host the DLL in a separate (32-bit) EXE, and use some form of inter-process communication to talk to it from your 64-bit Python process.
like image 107
Joe White Avatar answered Oct 21 '22 05:10

Joe White