【问题标题】:Understanding VB6 Project Files (.vbp)了解 VB6 项目文件 (.vbp)
【发布时间】:2014-06-06 14:57:17
【问题描述】:

在VBP文件中,有“References”和“Objects”如下:

Reference=*\G{D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}#2.0#0#..\..\..\WINDOWS\system32\msxml.dll#Microsoft XML, version 2.0
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; ieframe.dll
  1. 这两者有什么区别?
  2. 为什么有些 dll 是通过 Reference 而不是 Object 引用的,反之亦然?
  3. VB 从哪里获取对象引用的文件路径?在 VBP 中没有为它们指定路径,当我搜索我的注册表时也没有出现 GUID!但是,当我加载项目时,VB 会尝试查找 dll/ocx/etc。在某个绝对路径(例如C:\path\to\dll\ieframe.dll)。如果它不在注册表或 VBP 中,它在哪里获取此路径?!

【问题讨论】:

    标签: vb6


    【解决方案1】:

    Objects 用于通常编译为 .ocx 文件的 ActiveX 控件。 References 用于通常编译为 .dll 文件或 .tlb 文件的类型库。请注意,.ocx 文件也包含 typelib,因此这是非常不一致的并且几乎是遗留的划分。

    路径和文件名是可选的,typelib ID 是解决依赖关系的规范方法。只有在注册表中找不到这些时,才会有自动解析策略在当前文件夹中仅搜索 .ocxes 文件。这种最烦人的行为也发生在运行时,如果找不到类型库,应用程序开始在当前文件夹中自动注册 .ocxes,并且由于缺乏在 HKLM 中写入的权限而在现代操作系统上经常失败。

    .frm/.ctl 源文件中也有Object 行。如果添加现有的表单/用户控件,这些会附加到当前项目。

    如果将 .ocx 类型库添加为 Reference 行,IDE 通常无法加载项目,需要手动编辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多