Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


Alzon

Вопрос

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

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

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

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