Alzon Опубликовано 14 сентября, 2015 Поделиться Опубликовано 14 сентября, 2015 не могу импортировать класс из 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 Администраторы Brovin Yaroslav Опубликовано 14 сентября, 2015 Администраторы Поделиться Опубликовано 14 сентября, 2015 Прикрепите ваш проект с минимальным количеством кода, на котором видно, что класс у вас не находится. Ссылка на комментарий
0 Alzon Опубликовано 14 сентября, 2015 Автор Поделиться Опубликовано 14 сентября, 2015 Прикрепите ваш проект с минимальным количеством кода, на котором видно, что класс у вас не находится. test bpl.zip Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 15 сентября, 2015 Администраторы Поделиться Опубликовано 15 сентября, 2015 Чтобы любой класс можно было найти по имени, этот класс нужно вначале предварительно зарегистрировать через функцию RegisterClass. При отключении опции "Link with runtime pakages", ваше приложение включает в себя код rtl пакета. Поэтому при запуске вашего приложения, встроенный в приложение rtl пакет создает свои экземпляры хранилищ классов. Когда вы загружаете вашу библиотеку, она уже использует другой экземпляр rtl библиотеки (которая лежит вместе со средой IDE). В итоге получается две копии в памяти одной библиотеке. Но ваш пакет регистрирует ваш класс в одном хранилище, а приложение ищем в другом. Поэтому вы не можете найти ваш класс. Решение такое, вы должны поставлять потребителю, отдельно RTL пакет, отдельно ваш пакет, и ваше приложение (которое использует динамическую линковку rtl пакета) Alzon, Kitty и xenon54 3 Ссылка на комментарий
Вопрос
Alzon
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения