hinst писал(а):конкретно передача экземпляров классов из исполняемого файла в динамическую библиотеку и потом манипуляции с ними работать не будут
Самые распространенные ответы - "Так нельзя", "Так не будет работать". При этом люди не обременяют себя задачей ответить "Почему", "Что надо сделать, чтобы работало".
Добавлено спустя 40 секунд: передача экземпляров классов конкретно из LCL не будет так работать
Добавлено спустя 6 минут 10 секунд: в LCL используются данные, которые глобальные. И при вызове любого невиртуального метода будет обращение к другим глобальным данным Самый действенный метод это сделать специальный интерфейс к LCL. Причём если задача конкретная, то только к тем функциям и классам, с которыми планируется работать: например, только основные методы TForm, основные методы TPanel, TButton: назначение текста, задание размера, видимости. И вот через этот интерфейс уже всё и делать, тогда исполняемая копия LCL будет только в основной библиотеке, а в динамической библиотеке с плагином будут вызываться методы той же самой исполняющейся копии LCL через этот интерфейс.... Который, как я говорю, не обязан привязывать всё. Достаточно привязать через него только то, что используется, и только те классы, которые используются, если нужны кнопки, то кнопки, если списки то списки, ну вы поняли; и вот тогда это будет работать правильно и без падений
Добавлено спустя 1 минуту 46 секунд: и вот таким образом достигается, чтобы копия LCL была только в основной программе, а в плагине обращения к ней. Тогда не будут вылетать ошибки, будет меньше размер библиотеки с плагином, и будут меньше расходы ресурсов и во время исполнения, так как второй копии LCL тогда не будет
Добавлено спустя 1 минуту 12 секунд: а в перспективе можно было бы как-нибудь сделать чтобы этот динамический интерфейс сразу был, но это уже надо думать как лучше организовать
Sharfik писал(а):Лазарус бесполезная среда разработки, если его силами запрещать людям делать ПО к которому требуется прикручивать плагин. Любая вещь, если не имеет в своем составе идеи модульности, и разбития на простые отдельные составляющие заранее обречена на отсутствие ее развития.
Если мы работу работаем или плюшками балуемся. Если понадобился функционал плагинов - что то в консерватории не правильно. Правильно спроектированная программа должна заключать в себе весь функционал, для которого она предназначена.
ПС Сейчас любители TC/DC начнут в меня бросать чем нибудь... ППС Сам иногда с удовольствием пользуюсь ФАР-ом с дополнительными плагинами...
B4rr4cuda Хоть одну настоящую причину. Слова - типа так круто - не принимаются. Также отмазки по размазыванию функционала для комерческой продажи части прграммы.
1 ) А почему не пробовал использовать "Работающие DDL" из дельфи ? Классы предавать в параметрах и результате действительно не стоит .. А обычные типы вполне кушает ... 2 ) "Громоздкий LCL " можно вообще не использовать в DLL или использовать заменители типа КОЛ 3) Вместо DLL можно использовать "полноформатные" EXE --плагины иногда это даже удобнее т.к. плагин работает полностью автономно а обмен данными наладить не проблема даже в фоновом режиме . (Чуть больший размер инсталляции лихо компенсирует в разы большая надежность и полное отсутствие проблем совместимости )