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 пакета) Kitty, xenon54 и Alzon 3
Вопрос
Alzon
3 ответа на этот вопрос
Рекомендуемые сообщения