小编nih*_*har的帖子

如何在 MAUI 项目中包含每个平台的现有 C++ 库?

我们有一个针对每个平台构建的 C++ 库,即适用于 Windows 的 .dll、适用于 Android 的 .so 以及适用于 iOS 的 .a。尝试以下方法将 .so 文件包含在 Android 版 MAUI 应用程序中。(其他平台待定)-

  • Platforms -> Android -> lib -> arm64-v8a文件夹
  • 设置 .so 文件属性:Build Action = AndroidNativeLibrary
  • 用过的JavaSystem.LoadLibrary(lib name);
  • 为导入的库实现了常用的 PInvoke 类

但是,代码失败了

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 示例吗?支持真的足以满足生产使用吗?

--- 更新 …

c++ android maui .net-maui

8
推荐指数
1
解决办法
2310
查看次数

标签 统计

.net-maui ×1

android ×1

c++ ×1

maui ×1