Двуязычие в народИсточник: delphikingdom Дмитрий Солодский
Автор: Дмитрий Солодкий, Королевство DelphiВ статье описана практика написание проекта на двух языках: Delphi и С++. Во-первых, зачем это нужно? Каждый достаточно большой проект рано или поздно приходит к вопросу разделения труда. То бишь как могут несколько людей работать над одним и тем же проектом. Здесь есть множество решений. Одним из них есть концепция Plugins. Даная тема прекрасно описывается в статье Дмитрия Полщанова "Еще раз о Plugin's…". Но со временем в команде появляться люди или задачи, для которых лучше бы подошел язык С++. Об написание плагинов для проекта на Delphi на языке С++ и пойдет дальше речь. Что бы мы хотели получить? Есть проект написанный на Delphi. Есть подсистема плагинсов тоже, естественно, на Delphi. Задача состоит в написании такого же плагина, но на С++ Builder. Единственным отличием между пакетами (bpl), которые написаны на С++ Builder, и пакетами на Delphi являються 2 вещи:
Для того, что бы получить заголовки классов, которые написаны на Delphi, нужно использовать переключатели в опциях проекта Linker\Linker output\Generate all C++ Builder files. Это заставит линкер не только создать bpl и dcu файлы, но и создать заголовочные файлы (hpp), файл импорта (bpi) и статическую библиотеку (lib). После таких манипуляций у вас будет полный доступ ко всем модулям пакета. Кроме того, все компоненты пакета также появятся в палитре компонентов С++ Builder. Когда Delphi компилирует пакет, все классы и функции, описанные в модулях пакета в интерфейсных секциях, будут экспортируемыми. Для того чтобы класс или функция С++ были экспортируемыми, их достаточно описать с макросом PACKAGE. Interface Type TMyClass = class public Procedure myProc; end; procedure MyGlobalProc; На С++ этот код будет выглядеть так: class PACKAGE TMyClass : public TObject { public : void __fastcall myProc(); } void PACKAGE __fastcall MyGlobalProc(); |