какие-то глюки с динамическими библиотеками

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: какие-то глюки с динамическими библиотеками

Сообщение Снег Север » 22.06.2016 14:54:47

wavebvg писал(а):Чтобы разбив логическую часть на независимые библиотеки не иметь проблем в необходимости собирать большое проект на каждый чих.

Проблемы пересборки больших проектов в Лазарусе и Делфи не существует, это чисто сишная проблема. Единственная причина использования dll ИМХО - распространение программы с разным набором плагинов. Другой я не вижу.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: какие-то глюки с динамическими библиотеками

Сообщение Лекс Айрин » 22.06.2016 16:50:04

Снег Север, можно еще заключить в dll код, который нужно запускать в нескольких программах... например, сделать что-то типа личной рантайм библиотеки. Плюс, в Никсах существует традиция писать отдельно функционал и отдельно оконную "обвязку".
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: какие-то глюки с динамическими библиотеками

Сообщение Снег Север » 22.06.2016 19:05:05

Лекс Айрин писал(а):можно еще заключить в dll код, который нужно запускать в нескольких программах... например, сделать что-то типа личной рантайм библиотеки.

Да, согласен.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: какие-то глюки с динамическими библиотеками

Сообщение RusDeveloper » 01.08.2016 18:01:18

pupsik писал(а):Лекс Айрин и не только динамически. Для примера: https://github.com/bgarrels/lazarus-br "lazarus-br/misc/DynLibForm/Source/".

Спасибо! будем разбираться
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: какие-то глюки с динамическими библиотеками

Сообщение Sharfik » 02.08.2016 00:22:11

RusDeveloper писал(а):я в дллку не смогу засунуть форму??? а как же сложные приложения с кучей форм?

В примере глюк не с формой твоей, а в принципе с диалогами.
Зайди в "Параметры проекта" в разделе "Настройка и целевая платформа" установи галочку "Графическое приложение". Если не ошибаюсь тогда должно запуститься.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: какие-то глюки с динамическими библиотеками

Сообщение RusDeveloper » 02.08.2016 12:57:57

Sharfik, не помогло. остались те же самые ошибки при компиляции

Добавлено спустя 2 часа 39 минут 7 секунд:
RusDeveloper писал(а):
pupsik писал(а):Лекс Айрин и не только динамически. Для примера: https://github.com/bgarrels/lazarus-br "lazarus-br/misc/DynLibForm/Source/".

Спасибо! будем разбираться

заменил в примере cdecl на stdcall - пример продолжает работать :D отсюда вопрос: а что лучше stdcall или cdecl?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: какие-то глюки с динамическими библиотеками

Сообщение Лекс Айрин » 02.08.2016 17:54:00

RusDeveloper, всегда лучше применяемый в системе.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: какие-то глюки с динамическими библиотеками

Сообщение RusDeveloper » 03.08.2016 17:28:22

я так понял, что все экспортируемые функции должны быть описаны (в том числе и тело) в файле .lpr и вынести их в какой-то другой файл нельзя?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: какие-то глюки с динамическими библиотеками

Сообщение Снег Север » 04.08.2016 07:44:21

RusDeveloper писал(а):я так понял, что все экспортируемые функции должны быть описаны (в том числе и тело) в файле .lpr и вынести их в какой-то другой файл нельзя?
Да.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: какие-то глюки с динамическими библиотеками

Сообщение RusDeveloper » 04.08.2016 17:02:45

RusDeveloper писал(а):
pupsik писал(а):Лекс Айрин и не только динамически. Для примера: https://github.com/bgarrels/lazarus-br "lazarus-br/misc/DynLibForm/Source/".

Спасибо! будем разбираться

1. заметил, что можно переключаться между главной формой и формой из dll-ки. таким образом, можно создать несколько форм из дллки. я создал три, начал их закрывать и при закрытии второй нарвался на ошибку SIGSEGV - это из-за чего?

2. изменил код процедуры, создающей форму в дллке:
Код: Выделить всё
procedure ShowMyLibForm(AOwner:TComponent); cdecl; export;
  begin
    Application.Initialize;
    with TMyLibForm.Create(AOwner{Application}) do
      try
        ShowModal;
      finally
        Free;
      end;
  end;

а было вот так:
Код: Выделить всё
procedure ShowMyLibForm; cdecl; export;
  begin
    Application.Initialize;
    with TMyLibForm.Create(Application) do
      try
        ShowModal;
      finally
        Free;
      end;
  end;

т.е. передаю ссылку на главную форму (код в вызывающем приложении тоже поправил). это не помогло. я все так же могу переключаться между главной формой и формой из дллки - как с этим бороться? (ошибка описанная в первом пукте осталась)

Добавлено спустя 1 час 50 минут 20 секунд:
3. создал свое тестовое приложение. решил попробовать разнести формы по разным дллкам (абслолютно идентичным дллкам). так вот при втором вызове из второй дллки получаю ошибку Duplicate name: A component named "fmTest" already exists... fmTest - это имя формы. так еще вдобавок ко всему нельзя иметь в разных дллках компоненты с одинаковыми наименованиями???
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: какие-то глюки с динамическими библиотеками

Сообщение RusDeveloper » 30.08.2016 13:01:00

?
RusDeveloper
новенький
 
Сообщения: 92
Зарегистрирован: 06.04.2016 12:02:43

Re: какие-то глюки с динамическими библиотеками

Сообщение SSerge » 30.08.2016 14:54:33

RusDeveloper писал(а):SIGSEGV - это из-за чего?


Из-за того, что перед тем как обмениваться динамическими структурами между dll и основной программой, для dll должен быть установлен менеджер памяти, принадлежащий основной программе. Сделано?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: какие-то глюки с динамическими библиотеками

Сообщение and » 01.09.2016 21:03:55

RusDeveloper писал(а):все компилируется без ошибок, но если добавить зависимость проекта с пакетом LCL, то получаю кучу ошибок:
Компиляция проекта, цель: test_dll.dll: Код завершения 1, ошибок: 49
test_dll.lpr(11,1) Error: Undefined symbol: WSRegisterCustomImageList
test_dll.lpr(11,1) Error: Undefined symbol: WSRegisterMenuItem
<skip>
что это?
Добавьте в Uses модуль Interfaces.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 247

Рейтинг@Mail.ru