首页 > 解决方案 > 无法在 Visual Basic 6 中打开项目

问题描述

我的一个朋友给了我一个编译良好的测试程序,挑战是编辑源代码。我知道这个程序是用 VB6 编写的,我得到了 vb-decompiler。我有很多表格(.frm 文件)和一个 project.vbp 。现在,我从非官方来源下载了适用于 Windows 的 VB6,当我导入我的项目时,每个表单都出现内存不足错误。我忽略了错误,当导入完成时,它会给出关于日志文件的消息 -

Line 77: Cannot load control txtServer.
Line 85: Cannot load control txtUID.
Line 93: Cannot load control txtPwd.
Line 101: Cannot load control txtFTPPath.
Line 109: Cannot load control txtFTPSharedFolder.
Line 117: Cannot load control txtPort.
Line 222: Cannot load control txtType.
Line 266: Cannot load control txtPath.
Line 274: Cannot load control txtSharedFolder.
Line 310: Cannot load control cmdSave.

我尝试通过 Visual Basic 2008 Express 将我的 vb6 更新为 vb.net,但出现错误

upgrade failed: application has caused an exception

我现在该怎么办?编辑:我阅读了 frm 文件。我打开了 frm 文件,看到它有这样的行 -

begin xyz.txtServer

现在 xyz 是应用程序的名称,而 txtServer 是问题中所述的日志文件中的错误。

编辑2:我有一个新的发展。我打开了 frm 文件并知道具有 - begin VB.(some Command) 的行运行良好,但行 - begin xyz2000(some command) 给出了错误。很明显是dll错误。frm 不调用任何 xyz2000.dll 。我在给我的软件中没有得到任何 xyz2000.dll。那么这个xyz2000是从哪里来的呢?

标签: vb.netvb6vb6-migration

解决方案


“无法加载”错误很可能是由于 DLL(或 OCX 文件,一种 DLL)引用丢失或至少未在您的开发计算机上注册。VB6 不是静态链接语言,甚至不是真正动态链接的语言,而是 DLL 引用都是在运行时基于 COM 发现的——本质上意味着 DLL 通常必须在 Windows 中集中注册。

要进一步诊断具体问题:

  • 在文本编辑器中查看 FRM 文件。定义控件“txtServer”的文件及其类型。类型名称可以指示需要哪个 DLL 来提供控件。

  • 查看 FRM 文件的顶部,您应该会看到列出Object = "..."参考的行。这些也指示所需的 DLL / OCX 文件。

  • 查看 .VBP 文件,您会看到类似的ObjectReference行。

(如果您将这些项目的一些示例添加到问题中,人们可能会提供更多帮助。)


推荐阅读