Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Shurick V Гость
|
Добавлено: Пн Дек 31 2001 20:14 Заголовок сообщения: Очень хочется парочку компонентов в виде dll оформить. Не package, а dll. Вопрос "Как"? |
|
|
Вот есть у меня три компонента TComponent1 TComponent2 ...
Соответственно, есть их h и cpp - файлы. Все эти компоненты - наследники TComponent'а. Как всю эту братию запихнуть в одну dll, да так, чтоб она потом не требовала ничего для себя, как-то: vcl50.bpl,... Последнее, как мне кажется, должно решаться убиранием галки с build with runtime packages и Use dynamic RTL и подключением vcl50.lib.
Но как написать заголовочный файл для самой dll? что-то типа: #include #pragma hdrstop
#include "..\MyComp\Component1.h" #include "..\MyComp\Component2.h" ... #ifndef POP3Dll_H #define POP3Dll_H
#ifdef __DLL__ #define DLL_EI __declspec(dllexport) #else #define DLL_EI __declspec(dllimport) #endif
функции, насколько я понимаю, должны определяться как extern "C" { void __fastcall DLL_EI MyFunc1(AnsiString& s); ...
А вот как экспортировать компонент целиком? Вместе с конструкторами, деструкторами и public-методами?
class PACKAGE - насколько я понимаю, работает только при работе c пакетами, и если я его начинаю использовать, то в результирующей dll в качестве экспортируемых функций оказываются почему-то private-методы самого первого компонента. Как решать? Решение как как в Help'е (показан пример с экспортируемым диалогом и единственной интерфейсной функцией в качестве экспортируемой, в которой происходит создание и вызов диалога) не подходит. |
|
Вернуться к началу |
|
|
mhunter Гость
|
Добавлено: Чт Янв 03 2002 01:52 Заголовок сообщения: Re: Очень хочется парочку компонентов в виде dll оформить. Не package, а dll. Вопрос "Как"? |
|
|
OK, первый совет - уходи на MSVC. Второй - компоненты надо преобразовывать не в обычные, а в COM DLL (а то никто кроме тебя их не поймет )). Ну на крайняк автоматически в ActiveX - что хуже, но вообще говоря, одно и тоже. Сделай из них COM компоненты!!! |
|
Вернуться к началу |
|
|
Shurick V Гость
|
Добавлено: Вс Янв 06 2002 21:00 Заголовок сообщения: Re: Это все, конечно, хорошо... но мат.часть хромает... |
|
|
опять же, "Как" - это самое интересное. Далее, ActiveX, насколько я понял - только для визуальных компонент. Мои же - невизуальные и примерно такого типа:
... private: TList* l1; AnsiString string1; ...
Так, и еще эти компонентики используют сервисные функции, которые бы тоже хотелось оформить в кач-ве dll, но вот что интересно - можно ли использовать модификаторы функций в заголовке кроме __stdcall? Например __fastcall? А то у меня после преобразования выпадает Access Violation. Write of address ... При том, что функция отрабатывает свое правильно.
Вообще, где можно подробно почитать про dll, COM и компоненты в этом всем? Желательно с примерами. |
|
Вернуться к началу |
|
|
|