Load 32-bit shared library from 64-bit application?
I have a shared 开发者_如何学JAVAlibrary that is compiled as 32-bit. Can I use it from a 64-bit application or do I need to compile the shared library as 64-bit as well?
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.
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
精彩评论