Utilizing a 32-bit DLL in a 64-bit process via COM

血红的双手。 提交于 2019-12-17 19:24:03

问题


So some time ago I was investigating an issue that I knew would be coming up soon. We have a DLL that links to 32-bit versions of a certain library. There is no x64 version of this library available to us and we have no practical options in regards to replacing it.

When I performed this initial investigation I found an article or two describing a method by which a 64-bit process can utilize a 32-bit DLL (Windows) via a COM "server". Unfortunately I lost the links I had saved and I have now been searching for over an hour with no luck.

Is anyone here familiar with the process I am describing? I can't for the life of me remember which magical incantation I used to pull up the correct result in a search and, of course, it is now implementation time. Thanks in advance for any help you guys can offer, I will continue searching in the meantime.


回答1:


This may not be enough, but it might get you started: Process Interoperability

On 64-bit Windows, an out-of-process 32-bit COM server can communicate with a 64-bit client, and an out-of-process 64-bit COM server can communicate with a 32-bit client. Therefore, if you have a 32-bit DLL that is not COM-aware, you can wrap it in an out-of-process COM server and use COM to marshal calls to and from a 64-bit process.

And Accessing 32-bit DLLs from 64-bit code

Migrating your 32-bit Windows application to a 64-bit machine can be problematic if you have 32-bit DLLs that you cannot re-write. Mike Becker shows you how you can access 32-bit DLLs from 64-bit code using built-in IPC mechanisms...




回答2:


Client of Out-of-process Local Server is an example of running a COM out of process. If you are running a com server out of process your client can be 64bit and server 32bit.




回答3:


You can create a COM exe or service which will always run as 32 bit. Inside this 32 bit exe, you can access your 32 bit dll which links to 32 bit versions of the library.

The below block diagram explains the basics

Take a look at this link for details:

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/#more-355



来源:https://stackoverflow.com/questions/8660357/utilizing-a-32-bit-dll-in-a-64-bit-process-via-com

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