Load 32-bit shared library from 64-bit application?
Solution 1:
No, you cannot load a 32-bit library in a 64-bit application through conventional means.
There are some clever hacks out there such as having a 32-bit application which loads the library and exports the functions through an IPC interface, but if you have the option to compile the library as 64-bit, then that is by far the best choice.
Solution 2:
You cannot load dynamically or statically a 32-bit library from a 64-bit application or vice versa.
There are a number of work-arounds that I am aware of:
- Make a 64-bit version of the DLL
- Make a 32-bit version of the application
- Introduce a COM proxy object (also called a surrogate) as a communication intermediary. Described here.
- Host the DLL in a separate (32-bit) EXE and use an IPC technique
There are a number of inter-process communication (IPC) techniques. Here are a few examples:
- named pipe
- windows messsages
- socket
- HTTP listener
- WCF service (described here)
- .NET remoting