繁体   English   中英

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

[英]Windows 7 64 bit dll registering vs Windows 8.1 64 bit dll registering

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

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

  1. 在针对x86构建的ac#类中使用了32位dll(编译为Interop.VB6Class)。

  2. 我已经尝试过从我的64位文件夹和32位文件夹中重新抽气,没有运气

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

我遵循了许多联系和建议,因此,如果有人可以帮助我,我会接受您作为我的救世主,并永远称呼您为国王。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM