【发布时间】:2014-02-05 16:29:44
【问题描述】:
我很难找到如何在 firemonkey 应用程序中加载和使用已编译的 .so 库。我设法以一种可以编译的方式设置项目,并且库捆绑在 apk 中,但在应用程序启动时无法加载它。 system.LoadLibrary() 是否足够,或者我需要一些用于 lib 的 java 包装器?
编辑:我的代码现在看起来像这样,仍然无法通过库加载阶段。 TPath.GetLibraryPath 返回库所在位置的正确路径(我用 adb pull 检查)
{$IFDEF MSWINDOWS}
LIBNAME = 'sunvox.dll';
{$ENDIF}
{$IFDEF ANDROID}
LIBNAME = 'libsunvox.so';
{$ENDIF}
function sv_load_dll:integer;
var libPath:system.string;
begin
g_sv_dll:= 0 ;
libPath:=TPath.Combine(tpath.GetLibraryPath,libname);
{$IFDEF ANDROID}
g_sv_dll:=dlopen(MarshaledAString(libPath), RTLD_LAZY);
{$ENDIF}
{$IFDEF MSWINDOWS}
g_sv_dll := LoadLibrary(MarshaledString(libPath));
{$ENDIF}
result:=g_sv_dll;
if( g_sv_dll = 0 )then exit;
sv_audio_callback:=tsv_audio_callback(import('sv_audio_callback' ));
...
end;
【问题讨论】:
-
也许你可以展示一下你目前拥有的东西的精简版
标签: android delphi firemonkey delphi-xe5 loadlibrary