我正在尝试从 C# 调用 C# COM 对象。
我用 C# 创建了一个类库,并使用 tlbexe.exe 导出了一个类型库。然后我使用 regtlibv12.exe 注册了类型库。但是,当我在 Visual Studio 中添加对 COM 对象的引用时,我收到一条错误消息:
“Active X 类型库...是从 .NET 程序集导出的,无法添加为引用。请改为添加对 .NET 程序集的引用。”
任何帮助将不胜感激。
64 位进程无法直接访问 32 位非管理代码。 64 位系统上的 COM 对象有 2 个域。一种用于 64 位进程,另一种用于 32 位进程。它们在注册表中具有不同的注册区域,因此如果您仅注册 32 位 Com 对象,则对于 64 位进程而言是不存在的。现在,如果您有一个针对 ANY_CPU 的程序集,则 CLR 可以将其加载到 64 位或 32 位进程中。但是,如果将 ANY_CPU 程序集加载到 64 位进程中,则仍然无法加载任何 32 位未镜像代码。文中提到的解决方案artical使用 DCOM 和 IPC 创建从 64 位到 32 位代码的进程外调用。
您可以使用 WCF 在 .Net 中更轻松地完成同样的事情。您创建一个 32 位 WCF 服务器进程来访问 32 位托管代码。您的 64 位进程是 WCF 客户端,并调用 32 位服务器。您可以使用 WCF 支持的命名管道协议来避免网络堆栈。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)