VS2019使用Examarin嵌入C++

想把c++库,引入到Examarin中来,c++实现算法,Examarin实现UI。这对以前的c++ dll工程来说,可以节省大量的重复开发工作。但,看起来简单,实在问题很多。

开发工具想用vs2022,但不好意思,费好大的劲,bing、baidu到处搜,没走通。根本原因是,vs2022的c++新建项目模板中,里面没有“native-activity应用程序(android)”,路过老外的一个回复,好像是vs2022去掉了。原生的c++Android应用程序,想使用模板,就不能生成了。(如果大家想走这条路,用VS2019吧,安装上C++跨平台相关的选项。如果不用c++建android apk,可以用vs2022.)

有几个词,先说一下:

工具-》Android-》Android SDK管理,如上图。

  1. SDK,是Android Java开发包。 NDK,是c/c++开发包,需要安装,不然c++就无法编译、生成。

  1. c++生成的android库,通常是xxx.so 后缀,.so 表示是库文件。

  1. Android ABI,CPU指令接口。 安卓运行的CPU类型比较多:

右键Examarin工程-》属性。如上图。

v7a,v8a都是Arm 的架构,指令集模式是不同的。 c++编译后,是直接调用硬件指令集的。因此,我们选择的架构不同,编译后的.so就不同。

重点来了:我们选了几个架构,就要生成几个.so文件(下面有说明),不然,会出现一个,让你崩溃的提示:

DllNotFoundException。 这几天,我让这个提示,搞到崩溃。各种的不行。

开始正餐:

  1. vs2019,新建一个Xamarin工程。

  1. 再新建一个C++共享库:

  1. c++共享库,属性设定。(重点,不要错)

我创建了一个FunT的测试库,将生成一个libFunT.so的库文件。 注意,上面的平台,是ARM64。

  1. Func.cpp文件,加一行测试的导出函数:

extern "C" int Add_Integers(int a, int b) { return a+ b+ a; }

  1. 真正的重点来了:

第一步,照上面的路径,建好目录。并将上面FunT生成的so文件,一个一个放进去。目录与你选的cpu架构要一致,不然就会出现DllNotFoundException。

第二步,设置属性。

不要问不这样做行不行,问就是泪。

  1. 最后一步:

ok了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值