了解VB6项目文件(.vbp)

时间:2014-06-06 14:57:17

标签: vb6

在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获取Object引用的文件路径在哪里?在VBP中没有为它们指定路径,在搜索我的注册表时也没有出现GUID!但是,当我加载项目时,VB尝试查找dll / ocx / etc.在一些绝对路径上(例如C:\path\to\dll\ieframe.dll)。如果它不在注册表或VBP中,它在哪里获得这条路径?!

1 个答案:

答案 0 :(得分:6)

Object用于ActiveX控件,通常编译为.ocx文件。 Reference用于通常编译为.dll文件或.tlb文件的类型库。请注意,.ocx文件也包含typelib,所以这是非常不一致的,几乎是传统的划分。

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

.frm / .ctl源文件中也有Object行。如果添加现有表单/ usercontrol,它们将附加到当前项目。

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