2012-01-27 1 views
2

Если у вас есть проект Delphi и вы хотите добавить к нему библиотеку типов, вы можете довольно легко.Как иметь несколько библиотек типов в проекте Delphi?

Однако мы хотим иметь возможность добавлять несколько библиотек разных типов. Delphi XE IDE кажется, чтобы заставить вас есть один и только один тип библиотеки, который называется

MyProject.tlb 

Я хотел бы быть в состоянии иметь несколько библиотек типов в нашем главном проекте и сделать COM-плагинов, но я не 't хочу одну библиотеку монолитного типа, но несколько библиотек нескольких типов для различных типов плагинов.

Является ли это выполнимым? Является ли только среда IDE, которая применяет правило «Может быть только одно TLB»?

ответ

3

AFAIK, IDE не поддерживает несколько типов библиотек в проекте. Однако вы можете создавать отдельные внешние TypeLibraries (File> New> Other> Delphi Projects> Active> Type Library) для создания автономных файлов .tlb, их регистрации в ОС и последующей ссылки на них в TypeLibrary вашего проекта, если это необходимо ,

Однако, если все, что вы делаете, создает COM-плагины, которые потребляет ваш основной проект, тогда вам не нужно включать в свой основной проект плагин COM-модуля. Все, что вам нужно, это определения интерфейса. Просто добавьте сгенерированные <UnitName>_TLB.pas единиц в свои основные статьи проекта uses, где это необходимо. Не добавляйте сами файлы .tlb в свой основной проект.

7

Вы, безусловно, можете. Тип libs просто рассматривается как другой ресурс в финальной компиляции двоичного файла.

Похоже, что ваша IDE ограничивает вас одним типом lib. Если вы можете отредактировать исходный файл .RC, вы можете включить ссылку на ваш .tlb.

E.G ... Из раздела TEXTINCLUDE файла .RC.

3 TEXTINCLUDE 
BEGIN 
    "1 TYPELIB ""junk.tlb""\r\n" 
    "\0" 
END 

4 TEXTINCLUDE 
BEGIN 
    "2 TYPELIB ""junk2.tlb""\r\n" 
    "\0" 
END 

Компилятор ресурсов должен включать его в качестве второго ресурса TYPELIB. Я просто сделал это вручную, я не использовал поддержку Visual Studio.

Как только я скомпилировал свой EXE, я открыл его и посмотрел на ресурсы. Были два типа libs.

Two Type Libraries in an EXE

Я надеюсь, что это помогает.

Смежные вопросы