我有一个VB6程序调用VB6 DLL,后者又调用另一个VB6 DLL。当我执行调用程序时,有一个应用程序错误,我无法查明,所以我研究了如何“看到”dll中的错误。
我读过Stackoverflow条目question about debugging VB6 dll
并按照Booji Boy的指示创建一个vbg。我也按照他的指示从参考列表中删除了两个DLL。调用程序将.txt文件作为输入。当我执行exe时,我收到了这个错误:
错误号码:13说明:类型不匹配
应用程序未生成错误。
这是什么意思?我该如何调试此问题?
答案 0 :(得分:6)
您必须拥有EXE和两个DLL的所有源代码。您将所有项目添加到单个组文件,即VBG。您必须在EXE项目中引用第一个DLL。我不知道为什么你被告知你必须删除它们。您必须在第一个DLL项目中引用第二个DLL项目。 VB非常聪明,可以用项目引用静默替换DLL引用。如果从项目组中删除DLL项目,也可以使用DLL引用静默替换项目引用。
确保将错误处理设置为“Break on All Errors”或“Break in Class”。
类型不匹配错误可能来自简单的事情,例如将非数字字符串分配给数字变量。如果您传递对象引用,它会变得更复杂。如果您在以下内容中看到此错误:
Set myObject = someOtherObject
...看起来他们应该是同一类型,这可能会变得非常复杂。但首先,我会让你进行调试。
答案 1 :(得分:0)
您可以使用Visual Basic 6.0中的开源项目。它被称为" Debuggy v2"。这个项目有多个角色:
-debugger -disassembler -Windows资源提取器 -file十六进制编辑器 - 窗口嗅探器 -API间谍
所有人都融为一体。我可能对你需要的东西很有用。答案 2 :(得分:0)
当开始在VBG中工作时,如果库引用不一致,则可能出现类型不匹配。一个库可能在VBG中引用另一个库;第二个可能是引用编译版本。在它们之间传递对象可能会导致此错误。
具体例子:
C应该在VBG中引用B.