我们有一个针对每个平台构建的 C++ 库,即适用于 Windows 的 .dll、适用于 Android 的 .so 以及适用于 iOS 的 .a。尝试以下方法将 .so 文件包含在 Android 版 MAUI 应用程序中。(其他平台待定)-
Platforms -> Android -> lib -> arm64-v8a文件夹Build Action = AndroidNativeLibraryJavaSystem.LoadLibrary(lib name);但是,代码失败了
UnsatisfiedLinkError异常:dlopen失败:在Java.Interop.JniEnvironment.StaticMethods.CallStaticVoidMethod(JniObjectReference类型,JniMethodInfo方法,JniArgumentValue * args)中找不到库“lib name.so”在Java.Interop.JniEnvironment.StaticMethods.CallStaticVoidMethod(JniObjectReference类型) 、JniMethodInfo 方法、JniArgumentValue* args) 在 /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:line 13250 at Java /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers 中的.Interop.JniPeerMembers.JniStaticMethods.InvokeVoidMethod(字符串编码成员,JniArgumentValue* 参数)。 JniStaticMethods.cs:第 41 行位于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net6.0/android- 中的 Java.Lang.JavaSystem.LoadLibrary(String libname) 31/mcw/Java.Lang.JavaSystem.cs:第339行
在 VS 输出窗口中,可以看到以下消息 -
“共享库‘库名称’未加载,p/invoke‘方法名称’可能会失败”
尝试移动 lib 目录,但没有成功。
我们在这里缺少什么?
还有使用现有 C++ 库的 MAUI 示例吗?支持真的足以满足生产使用吗?
--- 更新 …