-1

我正在编写一个 C# 应用程序,它使用一个用 C++ 编写的 dll 作为参考。我可以使用那个 dll 命名空间并且我的项目编译得很好。但是,当我运行它时,我在为属性分配值的那一行中不断出现错误。我得到的异常错误如下:

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll
2013-06-03 12:26:32 - Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))
2013-06-03 12:26:32 -    at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
2013-06-03 12:26:32 -    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
2013-06-03 12:26:32 -    at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
2013-06-03 12:26:32 -    at sstObjTapLib._DsstObjTap.set_CapCode(String )
2013-06-03 12:26:32 -    at hpOutput.CTapPagerCom.MessageLoop() in c:\shs\Arial 8.1\XmarkClient\hpOutput\CTapPagerCom.cs:line 225

我使用以下代码启动了 dll 对象:

m_ctlTap = new sstObjTapLib.ctlTap();

下面是三张截图:

  1. 我使用的 DLL 的属性
  2. 我使用的dll的对象浏览器
  3. 显示异常发生位置的断点。

查看上面的堆栈错误,似乎.NET 正在尝试调用一些不存在的方法,但我只是设置了一个属性值。有人可以指出我正确的方向或我可能错过了什么吗?

注意一点:在调试时,我正在查看我加载的模块视图,但是我在加载的模块列表中没有看到这个 dll 名称。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

1 回答 1

0

我不知道为什么,但我使用的计算机安装了相同的 dll。我通过使用名为RegDllView的第三方工具查看它知道这一点。

所以我进去了,取消注册我正在使用的 dll,确认它也从注册表中消失了,然后再次重新注册。清理我的项目并重新编译所有内容,并让确切的代码工作。

看看我做了什么,我认为出于某种原因应用程序无法识别提供的指向正确 COM 的 GUID。

于 2013-06-03T20:32:34.987 回答