Понимание файлов проекта 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
- в чем разница между этими двумя?
- почему некоторые библиотеки DLL ссылаются через ссылку вместо объекта или наоборот?
- где VB получает путь к файлу для ссылок на объекты? Пути не указаны для них в VBP, и GUID не появляется при поиске в моем реестре! Однако, когда я загружаю проект, VB пытается искать dll / ocx / etc. на некоторый абсолютный путь (например,
C:pathtodllieframe.dll
). Где он получает этот путь, если он не находится в реестре или VBP?!
1 ответов
Object
s предназначены для элементов управления ActiveX, которые обычно компилируются .ocx файлов. Reference
s предназначены для библиотек типов, которые обычно компилируются .dll файлы или .tlb файлы. Заметить это. файлы ocx также содержат typelib, поэтому это очень непоследовательно и в значительной степени устаревшее разделение.
пути и имена файлов являются необязательными, идентификаторы typelib являются каноническим способом разрешения зависимости. Только если они не найдены в реестре, существует стратегия автоматического разрешения для поиска файлов в текущей папке .ocxes только. Это самое раздражающее поведение происходит во время выполнения, когда приложения начинают автоматическую регистрацию .ocxes в текущей папке, если typelibs не найдены и часто не удается на современных ОС из-за отсутствия разрешений на запись в HKLM.
здесь Object
строк .кадр./ПНО исходные файлы тоже. Они добавляются в текущий проект при добавлении существующей формы / usercontrol.
если an .ocx typelib добавляется как Reference
строка IDE обычно не загружает проект и руководство требуется изменить.