Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Вниз

Создание библиотек 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
15-1175255744
antonn
2007-03-30 15:55
2007.04.22
вопросик по php/html


2-1175681860
Sonia
2007-04-04 14:17
2007.04.22
Из января вычесть месяц


15-1175069461
MysqlNoob
2007-03-28 12:11
2007.04.22
MySql и консоль


6-1162118715
0x00
2006-10-29 13:45
2007.04.22
ICS v5; ICS v6


1-1172573346
Choco
2007-02-27 13:49
2007.04.22
Размер кадра видеофайла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский