Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Очень хочется парочку компонентов в виде dll оформить. Не package, а dll. Вопрос "Как"?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 (а то никто кроме тебя их не поймет Smile)). Ну на крайняк автоматически в 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 и компоненты в этом всем? Желательно с примерами.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...