开发者

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:

  1. Make a 64-bit version of the DLL
  2. Make a 32-bit version of the application
  3. Introduce a COM proxy object (also called a surrogate) as a communication intermediary. Described here.
  4. 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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜