从VB6 exe调试VB6 dll

从VB6 exe调试VB6 dll,dll,vb6,Dll,Vb6,我有一个VB6程序,它调用一个VB6 DLL,而VB6 DLL又调用另一个VB6 DLL。当我执行调用程序时,有一个应用程序错误,我无法确定,因此我研究了如何“看到”dll中的错误 我读了一篇文章 并按照Booji Boy的指示创建了一个vbg。我也按照他的指示从参考列表中删除了两个DLL。调用程序将.txt文件作为输入。执行exe时,我收到以下错误: 错误编号:13说明:类型不匹配 应用程序未生成错误 这是什么意思?如何调试此问题?您必须拥有EXE和两个DLL的所有源代码。将所有项目添加到单个

我有一个VB6程序,它调用一个VB6 DLL,而VB6 DLL又调用另一个VB6 DLL。当我执行调用程序时,有一个应用程序错误,我无法确定,因此我研究了如何“看到”dll中的错误

我读了一篇文章

并按照Booji Boy的指示创建了一个vbg。我也按照他的指示从参考列表中删除了两个DLL。调用程序将.txt文件作为输入。执行exe时,我收到以下错误:

错误编号:13说明:类型不匹配

应用程序未生成错误


这是什么意思?如何调试此问题?

您必须拥有EXE和两个DLL的所有源代码。将所有项目添加到单个组文件(即VBG)中。在EXE项目中必须有对第一个DLL的引用。我不知道为什么有人告诉你必须把它们拿走。您必须在第一个DLL项目中有对第二个DLL项目的引用。VB足够聪明,可以用项目引用悄悄地替换DLL引用。如果从项目组中删除了DLL项目,那么用DLL引用悄悄地替换项目引用也是非常聪明的

确保将错误处理设置为“所有错误中断”或“类中断”

类型不匹配错误可能发生在简单的事情上,例如将非数字字符串分配给数字变量。如果传递对象引用,则会变得更加复杂。如果您看到此错误发生在以下情况:

Set myObject=someOtherObject


。。。看起来它们应该是同一种类型,这可能会变得非常复杂。但首先,我让您进行调试。

您可以使用Visual Basic 6.0中的开源项目。它名为“”。此项目具有多个角色:

-调试器 -拆卸器 -Windows资源提取器 -文件十六进制编辑器 -窗口嗅探器 -API间谍


一切融为一体。我可能对您的需要很有用。

在VBG中开始工作时,如果库引用不一致,则可能会出现类型不匹配。一个库可能在VBG中引用另一个库;第二个可能引用已编译版本。在它们之间传递对象可能会导致此错误

具体例子:

  • VBG包含以下代码:A.DLL、B.DLL、C.DLL
  • A在VBG中引用B
  • C引用了编译的B
  • A中的代码调用C中的代码,并传递由B中的类定义的对象
  • 类型不匹配

C应该在VBG中引用了B。

该错误是一个运行时错误,由应用程序生成,但来自VB运行时内部。代码中的某些内容或正在调用的Dll导致类型不匹配,VB运行时正在以“友好”的方式捕获该类型。至于如何调试它,很难说没有看到代码。感谢您的回复。这个exe dll项目几周前还在运行。我将检查从一个项目传递到另一个项目的参数。您不应该执行exe。您应该从VB6 IDE运行exe项目。然后IDE将突出显示导致错误的行。+1。使用“文件-添加项目”将exe和两个DLL项目合并到一个VBG项目组中。您不需要删除DLL引用。请参阅VB6手册中的教程。