Windows 7 64位dll注册与Windows 8.1 64位dll注册

时间:2014-04-17 12:10:23

标签: c# windows-8 windows-7 vb6

我有一个包含vb6代码的32位编译dll。在我以前的操作系统,即Windows 7 64位,我能够在我的c#应用程序中注册并运行这个dll。现在,运行Windows 8.1,当我尝试注册相同的dll时,它注册正常,但是当我尝试在我的代码中读取dll时,我得到:

  

使用CLSID检索组件的COM类工厂   {D19A00C4-A7F9-4E14-A5E1-D060B7EB57F3}由于以下原因而失败   错误:80040154未注册类(HRESULT异常:   0x80040154(REGDB_E_CLASSNOTREG))。

  1. 32位dll(编译为Interop.VB6Class)用于c#类 这是针对x86构建的。

  2. 我已经尝试了64位文件夹和32位文件夹中的regasm,没有运气

  3. 当我运行Dependency Walker(一个很好的小应用程序,检查你的所有dll的依赖项是否可用以及你的dll及其依赖项的cpu版本是否匹配)时,我仍然收到消息&# 34;找到了具有不同CPU的模块"。

  4. 我遵循了许多链接和建议,所以如果有人能帮助我,我会接受你作为我的救世主并永远称你为王。

1 个答案:

答案 0 :(得分:0)

只是一个建议,但您是否100%确定您的项目设置是正确的。您的平台目标应为x86,并且应勾选首选项32位复选框。你也在运行Debug版本或发行版本吗?您需要为这两种环境设置32位设置。对于命令行版本,请打印以下内容以确保您的环境正确。

Console.WriteLine("OS {0}, Process {1}", System.Environment.Is64BitOperatingSystem, System.Environment.Is64BitProcess);

我知道这是一个漫长的过程,但它可能有助于找到问题的根本原因。