在较早的问题中,我试图让 C# 类充当 VB5 和 6 的 COM 对象。我确实设法让 COM 对象与 VB6 应用程序一起工作,但在让它与 VB5 一起工作时遇到了问题——在同一台机器。
作为参考,较早的问题是HERE。
我的最终目标是让这个 COM 对象适用于 VB5,但是当它运行时会引发异常:运行时错误 80070002。对 Stackoverflow 的研究表明,此错误代码是 File not Found 异常。VB6 程序能够与 VB5 程序(相同的代码)在同一台机器上运行,COM DLL 已正确注册(使用 regasm.exe)并且 TLB 显示在 VB5 的引用列表中。执行代码为:
Dim arcom As ARCOMObject.ARCOM_Class
Set arcom = New ARCOMObject.ARCOM_Class
Dim s As String
s = arcom.GetServiceResponse()
MsgBox (s)
在执行实例化类的行时抛出异常。
在我发现的其他地方,特别是在我上面所做的第二个 SO 参考中,有人建议使用实用程序depends.exe 来查看可能缺少哪些依赖项。不幸的是,我在我的 .Net 开发机器上和 VB5 机器上都找不到任何这样的实用程序。我不确定这是否会告诉我任何事情,但是...
那么,什么是VB5 看不到的,而VB6 要么可以看到,要么不需要?
编辑添加:
重要警告——因为它在从 IDE 运行时抛出了错误,所以我从未构建可执行文件来运行它,但是当我最终拍摄并这样做时,因为 DependencyWalker 需要它,我发现可执行文件本身工作正常!现在,DependencyWalker 给我消息“警告:由于延迟加载依赖模块中缺少导出功能,至少一个模块有一个未解析的导入。” 哇,太好了,这句话到底是什么意思?哈哈。
无论如何,我不确定我目前是否有需要解决的问题,但欢迎提出任何建议!