android - 尝试使用 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
带有项目的解决方案,因此很容易在此链接中重现。
谢谢。
解决方案
推荐阅读
- r - R Sandwich 包是否没有生成预期的聚集稳健标准错误?
- go - 解组自定义 [32] 字节类型返回零值
- css - 导航链接占用整个宽度
- flutter - 在颤动中将缩放图像显示为小部件
- asp.net-web-api2 - 在哪里将 DTO 映射到实体以在存储库中创建/添加方法
- laravel - 如何在 Laravel 中进行角色库访问?
- c++ - 为什么数字输出会受到 cout 语句的影响?
- facebook - FACEBOOK GRAPH API - 查找用户发表的所有评论
- go - 没有接收器的模拟功能
- azure-devops - Azure Devops - [DataTestMethod] 类型的单元测试方法未在 YAML 构建中执行