使用 Visual Studio 2019 开发环境 , 参考 【Visual Studio】Visual Studio 2019 社区版 CMake开发环境安装 ( 下载 | 安装相关组件 | 创建编译执行项目 | 错误处理 ) 博客 ;
在 Visual Studio Installer 中 , 安装 " 使用 C++ 的移动开发 " ;
等待安装完成 ;
在 Visual Studio 2019 欢迎界面 选择 " 创建新项目 " ,
在 创建新项目 对话框中 , 选择 " 动态共享库(Android) " 类型的项目 ;
设置项目的存放路径 ;
下面是创建项目时 , 自动生成的代码 ; 所有代码都在 extern "C" {}
包裹中 , 是以标准 C 格式导出 ;
#include "VS_NDK_Demo.h"
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "VS_NDK_Demo", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "VS_NDK_Demo", __VA_ARGS__))
extern "C" {
/*此简单函数返回平台 ABI,此动态本地库为此平台 ABI 进行编译。*/
const char * VS_NDK_Demo::getPlatformABI()
{
#if defined(__arm__)
#if defined(__ARM_ARCH_7A__) // 64 位 arm
#if defined(__ARM_NEON__) // 64 位 arm
#define ABI "armeabi-v7a/NEON"
#else
#define ABI "armeabi-v7a" // 32 位 arm
#endif
#else
#define ABI "armeabi"
#endif
#elif defined(__i386__) // x86 架构
#define ABI "x86"
#else
#define ABI "unknown"
#endif
LOGI("This dynamic shared library is compiled with ABI: %s", ABI);
return "This native library is compiled with ABI: %s" ABI ".";
}
void VS_NDK_Demo()
{
}
VS_NDK_Demo::VS_NDK_Demo()
{
}
VS_NDK_Demo::~VS_NDK_Demo()
{
}
}
右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 属性 " 设置 ;
设置预处理器 :
设置预编译头文件 :
预编译头文件是一些常用的头文件 : pch.h 内容如下 ;
#include <jni.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/resource.h>
#include <android/log.h>
生成动态库 : 右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 仅用于项目(J) -> 仅生成 VS_NDK_Demo(B) " 选项 ;
生成动态库结果 : 生成的动态库导出到了 D:\002_Project\006_Visual_Studio\VS_NDK_Demo\VS_NDK_Demo\ARM\Debug\libVS_NDK_Demo.so 路径中 ; 项目的目录是 D:\002_Project\006_Visual_Studio\VS_NDK_Demo\VS_NDK_Demo ;
上面导出的 ARM 架构的动态库 , 可以选择 x86 架构 , 再次编译 ; 可选择的架构有 ARM , ARM64 , x86 , x64 ;