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

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

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

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