Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Создание библиотек bpl   Найти похожие ветки 

 
Тфьу   (2007-02-27 12:05) [0]

Сделал библиотеку dll с фреймом. Передаю туда Application и панель, на которой должен быть размещен фрейм - никакой реакции. Включаю использование ShareMem - аналогично.
Решил сделать тоже самое через bpl. Однако package не может распознать слово "exports". Остались просто процедуры в interface:
function GetVersion:Cardinal;export;stdcall;
procedure RunModule(aApplication: TApplication; aControl:TPanel);export;stdcall;
function DoneModule:Boolean;export;stdcall;
Однако GetProcAddRess их не видит по имени. В dll в плане видимости было все нормально.


 
Сергей М. ©   (2007-02-27 12:26) [1]


> package не может распознать слово "exports"


А где у тебя расположено это "слово" ?


 
Тфьу   (2007-02-27 13:03) [2]

В package (dpk), я делал по аналогии с dll


 
Сергей М. ©   (2007-02-27 13:07) [3]


> делал по аналогии с dll


Ну и зачем тебе тогда bpl ?


 
Тфьу   (2007-02-27 13:10) [4]

dll не может нормально фрейм передать. У меня главное приложение ноль реакции, когда dll на ней фрейм делает.


 
tesseract ©   (2007-02-27 13:11) [5]


> Сделал библиотеку dll с фреймом.


Сделай лучше ActiveX  с фреймом.


 
Тфьу   (2007-02-27 13:14) [6]

ActiveX не регистрируется, если у клиента нет прав администратора на компьютере.


 
Тфьу   (2007-02-27 13:15) [7]

Проблема №2 с ActiveX - если кто-то работает с библиотекой, обновить ее тоже нельзя (когда несколько человек одновременно работают на одном компьютере). В случае с пакетами - у каждого просто программа в своем каталоге.


 
Сергей М. ©   (2007-02-27 13:17) [8]


> Тфьу   (27.02.07 13:10) [4]


Все классы, объявленные в интерфейсных разделах юнитов в составе dpk, уже являются экспортируемыми, так что не надо изобретать никаких велосипелов с exports и GetProcAddress.

Оба проекта собираешь с опцией Build With Run-Time Packages (sharemem не подключать !). Далее грузишь bpl (хоть статически хоть в динамике - без разницы) и в хост-приложении создаешь свой фрейм:

MyFrame := TMyFrame.Create(...);
MyFrame.Parent := MyPanel;

Все !!


 
Тфьу   (2007-02-27 13:39) [9]

А каким образом главная форма знает, какой класс регистрировать, если я динамически подключаю библиотеку? Во всех описаниях и примерах описания для объектов включаются в bpl и в главную программу. А это уже получается, что подключая новую библиотеку я должен перекомпилировать основную программу.


 
Сергей М. ©   (2007-02-27 14:23) [10]


> каким образом главная форма знает, какой класс регистрировать


Главная форма ничего не "регистрирует", она создает объект некоего известного хост-приложению класса, регистрируемого ( единой для обоих модулей - это важно !) самой bpl при ее инициализации.


> Во всех описаниях и примерах описания для объектов включаются
> в bpl и в главную программу


Ну а как ты хотел иначе ?
Компилятор же должен знать, что такое TMyFrame ...



Страницы: 1 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
15-1174690671
eXPell
2007-03-24 01:57
2007.04.22
Ну, разве что для интереса)))


2-1175628110
Андрей.А.В.
2007-04-03 23:21
2007.04.22
записать предложения в тексте в обратном порядке (1-е предложен


2-1175192929
aleko
2007-03-29 22:28
2007.04.22
ReadBuffer & WriteBuffer


1-1172147339
Dmitry_177
2007-02-22 15:28
2007.04.22
MYITEM перевести с С++ на Delphi


15-1175222220
Slider007
2007-03-30 06:37
2007.04.22
С днем рождения ! 30 марта