首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# COM组件与VB6一起工作,但不使用VB5 --这是怎么回事?

C# COM组件与VB6一起工作,但不使用VB5 --这是怎么回事?
EN

Stack Overflow用户
提问于 2011-04-28 17:38:31
回答 2查看 376关注 0票数 1

在前面的一个问题中,我试图让C#类充当VB5 & 6的COM对象。我确实设法让COM对象与VB6应用程序一起工作,但在同一台机器上使用VB5时遇到了问题。

供参考,前面的问题是HERE

我的最终目标是让这个COM对象为VB5工作,但是当它运行时它会抛出一个异常:运行时错误80070002。对堆栈溢出的研究表明,HERE是一个未找到的文件异常。VB6程序能够与VB5程序(相同的代码)在同一台机器上运行,COM DLL被正确注册(使用regasm.exe),TLB显示在VB5中的引用列表中。正在执行的代码是:

代码语言:javascript
复制
Dim arcom As ARCOMObject.ARCOM_Class
Set arcom = New ARCOMObject.ARCOM_Class
Dim s As String
s = arcom.GetServiceResponse()
MsgBox (s)

在执行实例化类的行时抛出异常。

在我发现的其他地方,特别是在我前面提到的第二个地方,有人建议使用实用程序depends.exe来查看可能缺少的依赖项。不幸的是,无论是在我的.Net开发机器上还是在VB5机器上,我都找不到任何这样的实用工具。我不确定这能不能告诉我什么,但是.

那么,VB5看不到什么,VB6可以看到还是不需要呢?

编辑以添加:

重要的警告 --因为它在从IDE运行时抛出了错误--我从未构建可执行文件来运行它,但是当我最后尝试并这样做时,因为DependencyWalker需要它,我发现可执行文件本身工作正常!现在,DependencyWalker给了我一条消息:“警告:至少有一个模块由于延迟负载相关模块中缺少导出函数而有一个未解决的导入”。哇,真酷,这句话到底是什么意思?LOL。

无论如何,我不确定我是否有一个问题需要解决,但任何建议都欢迎!

EN

回答 2

Stack Overflow用户

发布于 2011-04-29 17:56:43

当我被困于解决这些类型的问题时,这里总是对我有用的。您的问题是VB5版本丢失了一个文件,所以您需要知道是哪个文件。简单的解决方案(不诉诸WinDBG)是抛出FileMon或ProcMon -筛选它,以便您只看到失败。

然后,当应用程序失败时,您将看到丢失了哪个文件。

票数 2
EN

Stack Overflow用户

发布于 2011-04-29 18:53:19

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5822754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档