我有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其他人会发现有用的,(在我的案例中这是有效的):
创建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
注册ActiveX dll
2.1以管理员身份运行CMD
2.2运行- regsvr32.exe C:\path_to_old.dll
在C#项目中添加对转换后的dll(“ new.dll”)的引用
我以前在注册“ old.dll”之前添加了“ new.dll”引用,并且遇到以下异常
由于以下错误,未能检索具有CLSID {F2D4F4E5-EEA1-46FF-A83B-A270C92DAE4B}的组件的COM类工厂:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))
清洁溶液,删除参考并执行步骤2,3-帮助
您可能还会发现这篇文章有用
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句