|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.12.2011, 21:44 | #11 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Да, но этот комментарий там по другой причине: межмодульное управление памятью, а не по причине межязыкового взаимодействия.
Т.е. даже если DLL и exe написаны в одной версии Delphi, то комментарий остаётся в силе - (просто так) использовать String нельзя (даже в Delphi). Нужен общий менеджер памяти. Тогда - можно. Единственное - я бы заменил указание использовать PChar на указание использовать WideString. Всё же на дворе не 95-й год.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
21.12.2011, 21:49 | #12 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
|
22.12.2011, 03:51 | #13 |
Участник клуба
Регистрация: 21.03.2010
Сообщений: 1,508
|
Плагины я не писал. Точнее разбирал только один пример в Qt4(C++), но там есть специальный интерфейс для загрузки плагина QPluginLoader.
Примеры из сети по Delphi приводить не буду, так как сам не проверял. Я хотел сделать интерфейс к своему кроссворду, но достаточной силы желания у меня не появилось(тупо лень было ). Поэтому, когда сам попробую и реализую простейший пример - отпишусь. Буду юзать Delphi и Builder. Думаю для эксперимента сойдёт? Я тогда смогу словесно описать, что я делал. Просто есть предположение, что если некоторые вещи обзывать сложными словами, то они становятся сложными... |
22.12.2011, 07:31 | #14 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Человек_Борща, я так понял, что хочется использовать интерфейсы и классы в плагинах. т.е. в PluginAPI описан некий интерфейс, который должны реализовать все плагины и через который программа будет с ними общаться. Простые DLL тут не помогут и нужно привлекать технологию COM. В этом случае уже будет не всё так легко и просто, но по другому с классами не получится. Другой вариант - забить на интерфейсы и из DLL экспортировать отдельные функции.
|
22.12.2011, 09:37 | #15 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
не понимаю людей которые постоянно всё усложняют. COM это масса геморроя, COM стоит использовать только в том случае если это действительно нужно, а плагины вполне можно реализовать и через обычные функции
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
22.12.2011, 11:36 | #16 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Где можно почитать про плугинизацию через COM? И вообще о COM?
xwicked, интересно как в квипе зделано. Там вроде и без всяких dll/com, просто pas и .h файлы. haruhi, не думаю. Если я хочу достичь цели, полезу через любой геморой. (Со скайпом, к примеру, можно работать через COM). Допустим я хочу дать разработчику свободу ввиде доступа к нескольким классам через интерфейс. И реализовывать доступ через тонны методов кажется плохой идеей. Куда интереснее следующее, допустим программа позволяет прикрепить некий интерфейс плагина(IPluginInterf) который берёт начало от IMainPluginInterf. Если разработка будет ограничена только делфистами, то можно спокойно раздавать pas с описанием интерфейса IMainPluginInterf(Яркий пример - Download Master). А вот если я хочу, чтобы под мою программу можно было писать плагины на любом языке програмимирования? Тут подсказали вариант с некой DLL. К которой достаточно будет просто переводить модуль описания этой DLL на разные языки программирования. Главное, как эта DLL создаст экземпляр интерфейса для некого плагина(Аналогично тому, как анонимус наследует IPluginInterf от IMainPluginInterf и передаст его программе через ед-ую экспортируемую функцию)? Или наследование основного плагин-интерфейса не обязательное условие, котрое можно обойти просто создавая новый экземпляр интерфейса через Create, и задачая ему свой GUID? А передача просто, DLLplugin прсто вызвает создание экземпляра интерфейса из pluginapi.dll, а затем созданный интерфейс сама передаёт основной программе через экспортируемый метод. Последний раз редактировалось Человек_Борща; 22.12.2011 в 11:51. |
22.12.2011, 12:38 | #17 | |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
Цитата:
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
|
22.12.2011, 12:59 | #18 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
haruhi, что проще и удобнее для стороннего разработчика, по мимо хорошей документации?
Последний раз редактировалось Человек_Борща; 22.12.2011 в 13:03. |
22.12.2011, 13:10 | #19 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Цитата:
1. Подключение 2. Инициализация 3. Функции плагина (жестко - 5 функций с одним параметром, 10 функций с 2-мя параметрами и т.д.). 4. Освобождение ресурсов 5. Выгрузка длл Работа с длл - это последовательный обход всех пунктов (ну только в 3-ем функции могут вызываться как попало, в соответствии с задачей).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 22.12.2011 в 13:15. |
||
22.12.2011, 13:46 | #20 | |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
Цитата:
Хороший вариант это DLL со слудующими функциями Код:
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создание программы на Delphi (возможно за вознаграждение) | pr9n9 | Фриланс | 10 | 14.03.2011 13:17 |
Плагины для gta-vc? | VintProg | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 16 | 27.06.2010 10:18 |
подключение к Excel из delphi через ODBC.возможно ли это без глюков? | betirsolt | БД в Delphi | 0 | 13.06.2010 01:05 |
Автосохранение исходников в Delphi. Это возможно? | Kottik | Софт | 16 | 20.09.2009 17:36 |