gpt4 book ai didi

android - Java.Lang.UnsatisfiedLinkError : 'No implementation found for

转载 作者:行者123 更新时间:2023-12-02 16:22:26 35 4
gpt4 key购买 nike

我正在尝试通过 Java 绑定(bind)模板在 Xamarin.Android 上使用 OpenCv 4。这些是我已经完成的步骤:
0) 我已经通过 cmake 和 mingw64 编译了 opencv 二进制文件以获取 .jar 和 .a

  • 我已经将 .jar 和静态库 (.a) 放在了 Xamarin Java 绑定(bind)模板的 Jars forlder 中,并且我已经编译了模板。
    1.a) .jar Build Action 是 EmbeddedJar
    1.b) 库构建操作是 EmbeddedNativeLibrary
  • 我在我的 Xamarin.Android 项目中添加了对该模板的引用:opencv 方法被正确识别!

  • 但是,当我尝试执行时:
    Mat Source = Imgcodecs.Imread(ImagePath, Imgcodecs.ImreadGrayscale);
    我收到一个错误:
    Java.Lang.UnsatisfiedLinkError: 'No implementation found for long org.opencv.imgcodecs.Imgcodecs.imread_0(java.lang.String, int) (tried Java_org_opencv_imgcodecs_Imgcodecs_imread_10 and Java_org_opencv_imgcodecs_Imgcodecs_imread_10__Ljava_lang_String_2I)'
    我认为方法名称可能不匹配,可能是由于错误的 java 解析。
    我还尝试通过 JavaSystem.LoadLibrary("LibraryNameWithoutInitialLib") 加载共享库(.so),但我有同样的错误:/
    你知道为什么吗?
    enter image description here
    enter image description here

    最佳答案

    不能用 Xamarin.Android 链接静态库因为基于 Xamarin/Mono NDK 的运行时是静态主条目可执行文件,并且不会为每个项目动态构建。如果您不需要使用 .jar/.aar 高级包装器,那么您将需要使用运行时共享库​​并定义 DllImportAttribute您需要调用的导出函数的条目。

    Xamarin.Android supports the use of native libraries via the standard PInvoke mechanism.


    Using Native Libraries
    Use C/C++ libraries with Xamarin
    注意:开源中有许多 OpenCV C# 包装器/DllImport 文件(即在 github 上搜索 😁)
    注意:如果您使用的是 3rd-party .jar/.aar ,请确保它们使用的是 OpenCV 共享库,因此不需要 gradle 脚本将它们链接到基于 NDK 的 Android 应用程序。

    关于android - Java.Lang.UnsatisfiedLinkError : 'No implementation found for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64376817/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com