首页 > 解决方案 > 尝试使用 DLLImport 从 Xamarin Android 项目加载 C++ 库时出现异常

问题描述

我正在尝试构建一些 c++ 库,以便从 Xamarin Android 项目中使用它们。我Dynamic Shared Library从 Visual Studio创建了一个16.8.3。具有以下属性:

在此处输入图像描述

我在 C++ 库 SharedObject2.cpp 和 SharedObject2.h 中有 2 个文件:

int AddCpp(int a, int b)
{
    return a + b;
}

 #pragma once

int AddCpp(int a, int b);   

然后我编译了这个项目并将其添加到我的 Xamarin Android 文件夹中:

在此处输入图像描述

Build Action: AndroidNativeLibrary

然后在MainActivity我的 Xamarin Android 项目中:

  using Android.App;
using Android.OS;
using Android.Widget;
using System.Globalization;
using System.Runtime.InteropServices;

namespace Droid
{
    [Activity(Label = "Droid", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        [DllImport("libSharedObject2.so")]
        public static extern int AddCpp(int left, int right);

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            //breaks here
            AddCpp(2,3);
        }
    }
}

每当我尝试调用AddCpp(2,3);收益率时:

System.EntryPointNotFoundException: 'AddCpp assembly:<unknown assembly> type:<unknown type> member:(null)

我已经尝试了几次尝试,尝试添加对项目本身的引用,更改了 DLLImport 签名,但无法使其正常工作。我已经看到了许多其他关于 StackOverflow 的问题以及来自 Xamarin 团队的一些链接,这些链接是关于如何包含在视频上看起来很容易做到但在现实中很难做到的 c++ 库。我不知道我可能会错过什么,但任何帮助将不胜感激。

我附上了一个.zip带有项目的解决方案,因此很容易在此链接中重现。

谢谢。

标签: androidxamarindllxamarin.androiddllimport

解决方案


推荐阅读