无法在Visual Basic 6中打开项目

时间:2019-06-27 10:11:53

标签: vb.net vb6 vb6-migration

我的一个朋友精心编写了一个测试程序,其中的挑战是编辑源代码。我知道程序是用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。(某些命令)的行运行完美,但是具有-begin xyz2000(某些命令)的行给出了错误。很明显这是dll错误。 frm不会调用任何xyz2000.dll。给我的软件中没有任何xyz2000.dll。那么,这个xyz2000是从哪里来的?

2 个答案:

答案 0 :(得分:2)

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

要进一步诊断具体问题:

  • 在文本编辑器中查找FRM文件。控件“ txtServer”的定义位置和类型。类型名称可能指示提供控件所需的DLL。

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

  • 在.VBP文件中,您将看到类似的ObjectReference行。

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

答案 1 :(得分:0)

您绝对应该仔细检查.vbp文件。 ReferenceObject语句GUID必须出现在注册表的HKEY_CLASSES_ROOT\TypeLib键中。

这些是您在regsvr32中注册的组件。对于您无法注册的dll's,必须将它们复制到32位应用程序可以访问的位置。最好的位置是:

在64位Windows上

%SystemRoot%\SysWOW64

在32位Windows上

%SystemRoot%\System32