2011-04-28 77 views
1

在前面的问题中,我试图获得一个C#类作为VB5的COM对象运行。& 6.我确实设法让COM对象与VB6应用程序一起工作,但是在使用VB5时遇到了问题 - 在同一台机器上。C#COM组件适用于VB6,但不适用于VB5 - 这有什么用?

作为参考,以前的问题是HERE

我的最终目标是让这个COM对象适用于VB5,但是当它运行时它会抛出一个异常:运行时错误80070002.对Stackoverflow的研究表明HERE这个错误代码是一个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参考文献中,已经提出了使用utility.exe来查看可能缺失什么依赖关系的建议。不幸的是,我无法在我的.Net开发机器和VB5机器上找到这样的实用程序。我不知道这是否会告诉我任何东西,但...

那么,什么不能VB5看到,VB6要么可以看到或不需要?

编辑补充:

重要的警告 - 因为它扔了错误,而从IDE中运行我从来没有建立可执行文件来运行它,但是当我终于长出了一枪这样做因为DependencyWalker需要它,所以我发现可执行文件本身工作正常!现在,DependencyWalker给我提示“警告:由于延迟加载相关模块中缺少导出功能,至少有一个模块导入未解析。”哇,这很酷,这句话究竟意味着什么?大声笑。

,无论如何,我不知道,我有需要的时刻解决问题,但任何建议,欢迎!

+0

这可能会帮助:http://www.dependencywalker.com/ – 2011-04-28 17:44:02

+0

这确实帮助,但不一定在预期时尚!查看我的问题的附加组件。 – Cyberherbalist 2011-04-28 18:10:07

+0

谷歌搜索该错误消息抛出了几命中提示错误可能是忽略不计(例如http://www.dependencywalker.com/faq.html),但如果你在Windows XP上运行它也许只有。 – 2011-04-28 18:15:17

回答

2

以下是我在解决这些类型问题时遇到的问题。你的问题是,VB5版本在某处丢失了一个文件,所以你需要知道哪一个文件。简单的解决方案(不诉诸于WinDBG)是抛出FileMon或ProcMon - 过滤它,以便只看到失败。

然后,当你的应用程序失败,您会看到哪些文件不见了。

+0

将procmon和Filemon的帮助我走出这样的拥堵就不止一次。 – DarinH 2011-05-02 17:03:15

相关问题