我们有一个旧的 3rd 方组件,它是一个 32 位本机 dll。在我们基于 COM 的应用程序中,我们通过 Windows API 链接它。现在,我们计划将我们的应用程序升级到 .Net 并在 64 位系统上运行。我的问题:我们还能通过 Windows API 将旧的 32 位原生 dll 链接到我们的 64 位 .net 应用程序吗?如果没有,关于如何让它工作的任何想法?
问问题
1702 次
2 回答
5
32 位代码不能在 64 位进程内使用,句号。但是,您可以将 32 位 DLL 包装在 32 位进程外 COM 服务器中(如果 DLL 已经是 COM 服务器,那么您可以使用 COM DllSurrogate来代理它),然后是任何 64 位进程(.NET 或其他)可以根据需要使用该 COM 服务器。否则,您必须将 .NET 项目设置为 32 位而不是 64 位。如果安装了 WOW64 模拟器组件,它仍将在 64 位计算机上运行。
于 2013-09-10T17:54:32.923 回答
2
简答 Link is not possible because you can't link 32 and 64 bit together
Communicate yes, but you need two executable 一个 32bits 和一个 64bits
然后你需要搜索进程间通信。
如果您进行消息通信,则唯一可以在 32 和 64 位之间发送的消息是WM_COPYDATA
它可能会被阻止,UIPI
因此您可能需要使用ChangeWindowMessageFilter
来让它通过。
它可以工作,但您需要封装您想要在 32 和 64 系统之间进行的每个呼叫。
于 2013-09-10T16:50:44.020 回答