如何从.NET中的VB6 dll使用方法?

小狐狸

我有ActiveX VB6 DLL(无法访问其源代码),并且想调用方法“ GetUnitInfo”

我习惯像这样导入它:

[DllImport(@"C:\Users\R\Documents\lab.dll")]
public static extern long GetUnitInfo(String strRequest, String strInfo, String strName);

但我有一个例外:

在DLL中找不到名为“ GetUnitInfo”的入口点

我也尝试加载它:

Assembly myAssembly ;
myAssembly = Assembly.LoadFile("C:\\Users\\R\\Documents\\lab.dll");

但得到一个例外

该模块应包含程序集清单。(来自HRESULT的异常:0x80131018)

我试图清理解决方案,关闭项目选项中的清单,创建新的清单文件,但并没有帮助我...

小狐狸

找到解决方案,mb其他人会发现有用的,(在我的案例中这是有效的):

  1. 创建VB6 ActiveX dll的.Net包装器

    1.1以管理员身份运行CMD

    1.2移到.NET SDK文件夹- cd C:\Program Files\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\(在我的情况下)。

    1.3运行- TlbImp.exe C:\path_to_old.dll \out: new.dll

  2. 注册ActiveX dll

    2.1以管理员身份运行CMD

    2.2运行- regsvr32.exe C:\path_to_old.dll

  3. 在C#项目中添加对转换后的dll(“ new.dll”)的引用

我以前在注册“ old.dll”之前添加了“ new.dll”引用,并且遇到以下异常

由于以下错误,未能检索具有CLSID {F2D4F4E5-EEA1-46FF-A83B-A270C92DAE4B}的组件的COM类工厂:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))

清洁溶液,删除参考并执行步骤2,3-帮助

您可能还会发现这篇文章有用

C-Sharp-and-activex-dll

添加对dll的引用时出错:解决方案tlbimp.exe

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章