无法在 Visual Basic 6 中打开项目
Can't open project in Visual Basic 6
我的一个朋友给了我一个编译好的测试程序,挑战是编辑源代码。我知道该程序是用 VB6 编写的,并且我得到了 vb-反编译器。我有很多表格(.frm 文件)和一个 project.vbp 。现在,我从非官方来源下载了 VB6 for Windows,当我导入我的项目时,我在每个表单上都出现内存不足错误。我忽略了错误,当导入完成时,它给出了一条关于日志文件的消息 -
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是从哪里来的呢?
"cannot load" 错误很可能是由于 DLL(或 OCX 文件,一种 DLL)引用丢失或至少未在您的开发计算机上注册。 VB6 不是静态链接语言,甚至不是真正的动态链接,而是 DLL 引用都是基于 COM 在运行时发现的——本质上意味着 DLL 通常必须集中注册在 Windows.
进一步诊断具体问题:
在文本编辑器中查看 FRM 文件。定义控件 "txtServer" 的文件及其类型。类型名称可能指示需要哪个 DLL 来提供控件。
查看 FRM 文件的顶部,您应该会看到列出 Object = "..."
引用的行。这些还指示所需的 DLL / OCX 文件。
查看 .VBP 文件,您会看到类似的 Object
和 Reference
行。
(如果您将这些项目的一些示例添加到问题中,人们可能会提供更多帮助。)
您一定要仔细检查 .vbp
文件。 Reference
和 Object
语句 GUID 必须出现在注册表的 HKEY_CLASSES_ROOT\TypeLib
项中。
这些是您使用 regsvr32
注册的组件。对于无法注册的 dll's
,必须将它们复制到 32 位应用程序可以访问的位置。最佳位置是:
64 位Windows
%SystemRoot%\SysWOW64
32 位Windows
%SystemRoot%\System32
我的一个朋友给了我一个编译好的测试程序,挑战是编辑源代码。我知道该程序是用 VB6 编写的,并且我得到了 vb-反编译器。我有很多表格(.frm 文件)和一个 project.vbp 。现在,我从非官方来源下载了 VB6 for Windows,当我导入我的项目时,我在每个表单上都出现内存不足错误。我忽略了错误,当导入完成时,它给出了一条关于日志文件的消息 -
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是从哪里来的呢?
"cannot load" 错误很可能是由于 DLL(或 OCX 文件,一种 DLL)引用丢失或至少未在您的开发计算机上注册。 VB6 不是静态链接语言,甚至不是真正的动态链接,而是 DLL 引用都是基于 COM 在运行时发现的——本质上意味着 DLL 通常必须集中注册在 Windows.
进一步诊断具体问题:
在文本编辑器中查看 FRM 文件。定义控件 "txtServer" 的文件及其类型。类型名称可能指示需要哪个 DLL 来提供控件。
查看 FRM 文件的顶部,您应该会看到列出
Object = "..."
引用的行。这些还指示所需的 DLL / OCX 文件。查看 .VBP 文件,您会看到类似的
Object
和Reference
行。
(如果您将这些项目的一些示例添加到问题中,人们可能会提供更多帮助。)
您一定要仔细检查 .vbp
文件。 Reference
和 Object
语句 GUID 必须出现在注册表的 HKEY_CLASSES_ROOT\TypeLib
项中。
这些是您使用 regsvr32
注册的组件。对于无法注册的 dll's
,必须将它们复制到 32 位应用程序可以访问的位置。最佳位置是:
64 位Windows
%SystemRoot%\SysWOW64
32 位Windows
%SystemRoot%\System32