Понимание файлов проекта VB6 (.vbp)

в файлах VBP есть "ссылки" и "объекты" следующим образом:

Reference=*G{D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}#2.0#0#......WINDOWSsystem32msxml.dll#Microsoft XML, version 2.0
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; ieframe.dll
  1. в чем разница между этими двумя?
  2. почему некоторые библиотеки DLL ссылаются через ссылку вместо объекта или наоборот?
  3. где VB получает путь к файлу для ссылок на объекты? Пути не указаны для них в VBP, и GUID не появляется при поиске в моем реестре! Однако, когда я загружаю проект, VB пытается искать dll / ocx / etc. на некоторый абсолютный путь (например,C:pathtodllieframe.dll). Где он получает этот путь, если он не находится в реестре или VBP?!

1 ответов


Objects предназначены для элементов управления ActiveX, которые обычно компилируются .ocx файлов. References предназначены для библиотек типов, которые обычно компилируются .dll файлы или .tlb файлы. Заметить это. файлы ocx также содержат typelib, поэтому это очень непоследовательно и в значительной степени устаревшее разделение.

пути и имена файлов являются необязательными, идентификаторы typelib являются каноническим способом разрешения зависимости. Только если они не найдены в реестре, существует стратегия автоматического разрешения для поиска файлов в текущей папке .ocxes только. Это самое раздражающее поведение происходит во время выполнения, когда приложения начинают автоматическую регистрацию .ocxes в текущей папке, если typelibs не найдены и часто не удается на современных ОС из-за отсутствия разрешений на запись в HKLM.

здесь Object строк .кадр./ПНО исходные файлы тоже. Они добавляются в текущий проект при добавлении существующей формы / usercontrol.

если an .ocx typelib добавляется как Reference строка IDE обычно не загружает проект и руководство требуется изменить.