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

时间:2019-01-25 08:22:28

标签: c# c++ .net

我有一个使用.NET DLL的64位应用程序,并且从CoCreateInstance()返回一个错误,提示“类未注册”。 (0x80040154)

现在,它作为32位应用程序已经运行了很长时间,并且没有问题。调用.NET DLL可以将其注册为安装的一部分,或者在我的开发机上也可以将其注册为一部分构建过程。最近向64位应用程序的转换已开始导致此错误(该应用程序的其余部分现在可以在64位系统上正常运行,因此那里没有其他问题)。

该应用程序是非托管C ++。 DLL是受管理的C#、. NET 2.0,并设置为“任何CPU”。两者均内置于VS2010中。我的安装包使用Regasm注册DLL,我想知道是否可能需要64位版本的regasm,但是,我相信我已经在使用它了。 Visual Studio还设置为在构建过程中注册DLL,但是即使在调试器中运行64位程序仍然找不到该类。

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

1 个答案:

答案 0 :(得分:2)

您的安装程序可能使用了以下内容的32位重载:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe

但是它应该使用64位重排:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe