如何为64位应用程序注册.NET DLL

How do I register a .NET DLL for 64-bit application

本文关键字:注册 NET DLL 应用程序 64位      更新时间:2023-10-16

我有一个64位应用程序,它使用.NET DLL,并且从CoCreateInstance()返回一个错误,说"class not registered"。(0x80040154)

现在,作为一个32位应用程序,它已经运行了很长一段时间,并且调用.NET DLL没有问题,它在安装过程中注册,或者在我的开发机器上,在构建过程中注册。最近转换为64位的应用程序已开始导致此错误(应用程序的其余部分现在运行良好,为64位,因此没有其他问题)。

该应用程序是非托管C++。DLL由C#、.NET 2.0管理,并设置为"任意CPU"。两者都是在VS2010中构建的。我的安装包使用Regasm来注册DLL,我想知道我是否需要Regasm的64位版本,然而,我相信我已经在使用它了。Visual Studio也被设置为在生成过程中注册DLL,但即使在调试器中运行64位程序也无法找到该类。

我需要做什么来注册DLL,以便64位版本的程序可以通过CoCreateInstance()找到DLL?

您的安装程序可能使用来自的32位regasm

C:WindowsMicrosoft.NETFrameworkv4.0.30319RegAsm.exe

但它应该使用64位regasm:

C:WindowsMicrosoft.NETFramework64v4.0.30319RegAsm.exe