我可以将 32 位本机 dll(不是 .Net 程序集)链接到我的 64 位 .Net 应用程序吗? [英] Can I link a 32-bit native dll (not .Net assembly) into my 64 bit .Net applicaiton?

查看:30
本文介绍了我可以将 32 位本机 dll(不是 .Net 程序集)链接到我的 64 位 .Net 应用程序吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个旧的 3rd 方组件,它是一个 32 位本机 dll.在我们基于 COM 的应用程序中,我们通过 Windows API 链接它.现在,我们计划将我们的应用程序升级到 .Net 并在 64 位系统上运行.我的问题:我们仍然可以通过 Windows API 将旧的 32 位本机 dll 链接到我们的 64 位 .net 应用程序吗?如果没有,关于如何让它工作的任何想法?

We have an old 3rd party component which is a 32 bit native dll. In our COM based app, we link it through Windows API. Now, we are planning to upgrade our app to .Net and running on 64 bit system. My question: Can we still link the old 32 bit native dll into our 64 bit .net app through Windows API? If not, any ideas on how to get it to work?

推荐答案

32 位代码不能在 64 位进程内使用,句号.但是,您可以将 32 位 DLL 包装在 32 位进程外 COM 服务器中(如果 DLL 已经是 COM 服务器,那么您可以使用 COM DllSurrogate 来代理它),然后任何 64 位进程(.NET 或其他)都可以使用该 COM服务器根据需要.否则,您必须将 .NET 项目设置为 32 位而不是 64 位.如果安装了 WOW64 模拟器组件,它仍将在 64 位机器上运行.

32-bit code cannot be used inside of a 64-bit process, period. However, you can wrap the 32-bit DLL inside of a 32-bit out-of-process COM server (if the DLL is already a COM server, then you can use a COM DllSurrogate to proxy it), then any 64-bit process (.NET or otherwise) can use that COM server as needed. Otherwise, you will have to set the .NET project to 32-bit instead of 64-bit. It will still run on a 64-bit machine, provided the WOW64 emulator component is installed.

这篇关于我可以将 32 位本机 dll(不是 .Net 程序集)链接到我的 64 位 .Net 应用程序吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆