Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 21:37   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию Классы в Dll, как использовать их в EXE?

Здраствуйте! Знаю, что подобная тема уже поднималась, но мне нужно ответ только на мой случай. Короче у меня есть DLL- библеотека в которой описаны один или несколько классов. При разработке класса были использованы стороние модули, хранящиеся в lib в папке с Delphi7. У класса(-ов) есть функции, процедуры(изменение переменных внутри класса), функции, переменные, свойства(описаны так: <имя свойства>: <тип> read <имя переменной> write <функция в которой происходит изменение свойства>), константы. Описано всё, кроме процедур и функций
(их код), выше конструкции {$R *.res}. Вопрос: Какой слудует модуль создать, чтобы использовать данный DLL в программе?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 18.04.2014, 00:29   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Классы? Никак. Класс нельзя использовать, не объявив реализацию, т.е. не написав код.

Но можно обернуть класс в интерфейс, и тогда код всегда закрыт в DLL а интерфейс можно легко использовать где угодно, при достаточной отстраненности от Delphi можно и в C++ его докинуть.

Читайте про ActiveX, COM, OLE-автоматизацию. Там вопрос интерфейсов достаточно хорошо развернут, точнее полностью развернут.
Статьи есть на королевстве Delphi, так же написано много литературы, ещё можно у GunSmoker'а в блоге почитать, там вопрос реализации плагинов на основе интерфейсов - хорошо подан.

Ссылки гуглите сами.
Человек_Борща вне форума Ответить с цитированием
Старый 18.04.2014, 09:41   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Классы? Никак. Класс нельзя использовать, не объявив реализацию, т.е. не написав код.

Но можно обернуть класс в интерфейс, и тогда код всегда закрыт в DLL а интерфейс можно легко использовать где угодно, при достаточной отстраненности от Delphi можно и в C++ его докинуть.

Читайте про ActiveX, COM, OLE-автоматизацию. Там вопрос интерфейсов достаточно хорошо развернут, точнее полностью развернут.
Статьи есть на королевстве Delphi, так же написано много литературы, ещё можно у GunSmoker'а в блоге почитать, там вопрос реализации плагинов на основе интерфейсов - хорошо подан.

Ссылки гуглите сами.
Спасибо большое, вы всегда даете верные и понятные ответы. Но я некогда не работал с интерфейсами. При том, надо, чтобы использовался код наследующий от класса одного из модулей программы(Synapse). Я постораюсь попробовать найти реализацию интерфейса в Dll(их там ещё придется в CLSID регистрировать), но боюсь не будет работать.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 18.04.2014, 10:12   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Интерфейсу пофигу наследование класса, интерфес реализует только те методы, что опишите вы. Там не будет методов и свойств предка.

Цитата:
Dll(их там ещё придется в CLSID регистрировать), но боюсь не будет работать.
Вы путаете с ActiveX/OM/OLE. Не надо там ничего регистрироваить, все проще.

Достаточно иметь описание интерфейса(Header) и dll, с 1 функцией: GetInterface:
Код:
function GetInterface:IMySuperClass; stdcall;
begin
 Result:=TMySuperSecretClass.Create;
end;

exports GetInterface name 'GetInterface';
В блоке GunSmoker'а все расписано по части интерфейсов как из программы так и из DLL.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция для сборки приложений на Qt в один exe без зависимостей от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll и т.д. 8Observer8 Qt и кроссплатформенное программирование С/С++ 12 25.06.2015 03:18
Как использовать в Delphi-программе функции из DLL, написанной на C# АТИКОН Общие вопросы Delphi 12 19.03.2013 08:28
Как использовать в коде DLL компоненты из формы основного EXE приложения? calypso Общие вопросы Delphi 7 03.12.2012 10:15
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку kapustin Общие вопросы .NET 10 23.09.2009 22:20
использовать DLL как COM-объект computerman Помощь студентам 4 08.07.2009 13:23