Sascha Опубликовано 5 октября, 2021 Поделиться Опубликовано 5 октября, 2021 Вот есть .so-файл, который хочется вызывать из своего firemonkey-проекта (для Android), но как? Нужно создавать бридж? Можно подробную инструкцию? Спасибо Цитата Ссылка на комментарий
0 mazayhin Опубликовано 6 октября, 2021 Поделиться Опубликовано 6 октября, 2021 13 часов назад, Sascha сказал: Вот есть .so-файл, который хочется вызывать из своего firemonkey-проекта (для Android), но как? Нужно создавать бридж? Можно подробную инструкцию? Спасибо На сколько память не изменяет, то деплоить ее, загружать как dll в Win ну и работать Цитата Ссылка на комментарий
0 gonzales Опубликовано 7 октября, 2021 Поделиться Опубликовано 7 октября, 2021 деплоить библиотеку используя RemotePath library\lib\arm64-v8a\ (это для Android64) DLL_PATH:=TPath.GetLibraryPath+'/'; function MySafeLoadLibrary(ModuleName:string):HMODULE; var errorMsg:string; begin Result:=0; ModuleName:=DLL_PATH+ModuleName; if FileExists(ModuleName) then begin Result:=LoadLibrary(PChar(ModuleName)); end; if Result = 0 then begin errorMsg:=string(UTF8Decode(dlerror)); errorMsg:=Format('Can not load %s error:%s', [ModuleName, errorMsg]); ShowMessage(errorMsg); raise Exception.Create(errorMsg); end; end; Sascha 1 Цитата Ссылка на комментарий
0 Sascha Опубликовано 18 октября, 2021 Автор Поделиться Опубликовано 18 октября, 2021 В 07.10.2021 в 14:22, gonzales сказал: деплоить библиотеку используя RemotePath library\lib\arm64-v8a\ (это для Android64) DLL_PATH:=TPath.GetLibraryPath+'/'; function MySafeLoadLibrary(ModuleName:string):HMODULE; var errorMsg:string; begin Result:=0; ModuleName:=DLL_PATH+ModuleName; if FileExists(ModuleName) then begin Result:=LoadLibrary(PChar(ModuleName)); end; if Result = 0 then begin errorMsg:=string(UTF8Decode(dlerror)); errorMsg:=Format('Can not load %s error:%s', [ModuleName, errorMsg]); ShowMessage(errorMsg); raise Exception.Create(errorMsg); end; end; А что есть dlerror у вас? Откуда она берется? Цитата Ссылка на комментарий
0 Sascha Опубликовано 18 октября, 2021 Автор Поделиться Опубликовано 18 октября, 2021 Впрочем, это неважно (я про dlerror). А как можно импортировать функции из .so-файла, если он как черный ящик? А потом их использоваать в GetProcAddress Цитата Ссылка на комментарий
0 gonzales Опубликовано 19 октября, 2021 Поделиться Опубликовано 19 октября, 2021 если я правильно понимаю, то импортирование функций идет по имени, соответственно использовать библу без описания не получится. av_get_channel_layout_string:procedure(buf : PAnsiChar;buf_size : Integer;nb_channels : Integer;channel_layout : int64_t) ; cdecl; @av_get_channel_layout_string:=SafeGetProcAddress(AVUtilHandle, 'av_get_channel_layout_string'); Цитата Ссылка на комментарий
Вопрос
Sascha
Вот есть .so-файл, который хочется вызывать из своего firemonkey-проекта (для Android), но как? Нужно создавать бридж?
Можно подробную инструкцию? Спасибо
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.