我是.NET和Windows的新手(但有C / C ++经验),当我尝试实例化一个在dll中定义的类时遇到问题。
我的设置:
在Visual Studio 2013中,我的解决方案包含两个项目:
作为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
非常感谢您提供的有关尝试或排查问题的任何建议。