从DLL

时间:2016-04-21 13:27:14

标签: c# .net dll

我是.NET和Windows的新手(但有C / C ++经验),当我尝试实例化一个在dll中定义的类时遇到问题。

我的设置:

在Visual Studio 2013中,我的解决方案包含两个项目:

  1. c#windows application(.NET 4.5)
  2. 一个c ++ dll(继承自旧代码) - 称之为dllLib.dll
  3. 作为c#应用程序的预构建步骤,我使用tlbimp从dll生成COM互操作。这给了我interop.dllLib.dll,我在c#项目中添加了它作为参考。

    当我尝试从c#项目实例化一个dll类(称为switchboard)时,我收到以下错误:

      

    dllLib.switchboard myclass = new dllLib.switchboard();

         

    mscorlib.dll中出现“System.Runtime.InteropServices.COMException”类型的异常,但未在用户代码中处理       附加信息:检索具有CLSID {D7EBBF24-5620-4AED-871B-2027471FD075}的组件的COM类工厂失败   出现以下错误:80040154未注册类(例外情况除外)   HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。

    我很难过。 dll注册没有问题(regsvr32工作)。 c#app可以看到类“交换机”的接口,它可以毫无怨言地编译。

    我已经尝试/检查过的事情:

    • 以管理员身份运行Visual Studio

    • Active Solution是Debug x86

    • 项目上下文是x86(c#)和Win32(dll)

    • regsvr32 / n / i:用户dllLib.dll成功,但有趣的是,用/ u取消注册会失败。

    取消注册dll时出现错误消息:

      

    对DllUnregisterServer的调用失败,错误代码为0x8002801c

    非常感谢您提供的有关尝试或排查问题的任何建议。

0 个答案:

没有答案