64 to 32 bit Interop - how?

那年仲夏 提交于 2019-11-30 17:37:12
Reed Copsey

The best approach is to make an out of process COM server that wraps your 32-bit DLL. You can then call this from 64bit code.

Here is an explanation of the basic concepts.

What you need to do is create two processes communicating with IPC. This way, one can be 32 bit, and one can be 64 bit. You need to create a 32 program which links with the COM object and exposes its API through some IPC mechanism such as a named pipe. This way your .NET program can access it from another process.

Check out this blog post. You can reference a 32 bit COM assembly from a 64 bit .NET application using a runtime callable wrapper. The short version is the following...

  1. Use tlbimp.exe to create a 64 bit Runtime Callable Wrapper:

    tlbimp.exe foo.dll /machine:x64 /out:Interop.Foo.dll

  2. Register the COM assembly (not the RCW) if you haven't already:

    regsvr32.exe foo.dll

  3. Reference the RCW (eg. Interop.Foo.dll) from your application. Change your Build Configuration to x64 and let 'er rock.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!