vb.net - 无法在 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是从哪里来的呢?
解决方案
“无法加载”错误很可能是由于 DLL(或 OCX 文件,一种 DLL)引用丢失或至少未在您的开发计算机上注册。VB6 不是静态链接语言,甚至不是真正动态链接的语言,而是 DLL 引用都是在运行时基于 COM 发现的——本质上意味着 DLL 通常必须在 Windows 中集中注册。
要进一步诊断具体问题:
在文本编辑器中查看 FRM 文件。定义控件“txtServer”的文件及其类型。类型名称可以指示需要哪个 DLL 来提供控件。
查看 FRM 文件的顶部,您应该会看到列出
Object = "..."
参考的行。这些也指示所需的 DLL / OCX 文件。查看 .VBP 文件,您会看到类似的
Object
和Reference
行。
(如果您将这些项目的一些示例添加到问题中,人们可能会提供更多帮助。)
推荐阅读
- kubernetes - GKE 集群无法从同一项目(GitLab Kubernetes 集成)中的 GCR 注册表中提取(ErrImagePull):为什么?
- crystal-lang - 输出当前光纤,直到 FD 有一些数据
- javascript - 如何使用 babel-loader 转换 node_modules 模块?
- matlab - 如何将 .bib 文件读取为文本并将其分隔为文献计量目标的字段?
- spring-cloud-contract - Spring Cloud Contract 无法从 Nexus 查找/下载工件,存根模式远程
- javascript - 随机选择数组中的元素一次,同时跟踪它们的原始位置 - JavaScript
- php - 什么用于 parse_str(),因为 json_last_error() 用于 json_decode()?
- reactjs - Leaflet 在 React 应用程序中使用新数据重新渲染地图
- python - 编辑器中缺少 Pycharm 依赖项 - 在指定文件夹中安装了 requirements.txt
- sql - HANA SQL:如何在引用主表的条件下加入第一行