Перейти к содержанию
  • Регистрация
  • 0
Alzon

Импорт класса из bpl (LoadPackage)

Вопрос

не могу импортировать класс из bpl в Delphi XE7 при  "Link with runtime pakages" - false;  :(
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 LoadPackage('Package2.bpl');
  if GetClass('TMyClass')<> nil then
   showmessage('найден TMyClass');
end;
 
Может кто уже сталкивался ...?
Проект на FMX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Прикрепите ваш проект с минимальным количеством кода, на котором видно, что класс у вас не находится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Прикрепите ваш проект с минимальным количеством кода, на котором видно, что класс у вас не находится.

test bpl.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
  1. Чтобы любой класс можно было найти по имени, этот класс нужно вначале предварительно зарегистрировать через функцию RegisterClass.
  2. При отключении опции "Link with runtime pakages", ваше приложение включает в себя код rtl пакета. Поэтому при запуске вашего приложения, встроенный в приложение rtl пакет создает свои экземпляры хранилищ классов. Когда вы загружаете вашу библиотеку, она уже использует другой экземпляр rtl библиотеки (которая лежит вместе со средой IDE). В итоге получается две копии в памяти одной библиотеке. Но ваш пакет регистрирует ваш класс в одном хранилище, а приложение ищем в другом. Поэтому вы не можете найти ваш класс.

Решение такое, вы должны поставлять потребителю, отдельно RTL пакет, отдельно ваш пакет, и ваше приложение (которое использует динамическую линковку rtl пакета)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...