JNA技术的简单流程_C++方面
1 打开IDE

打开C++ IDE
2新建项目

选择 创建新项目
3新建项目

选择 具有导出项的(DLL)动态链接库 并点击 下一步,更改项目名(以下记为$N,以$N指代此处您创建的工程名,但请不要用$N作为工程名),点击创建,记下您工程的位置
4:检查先决条件
检查界面中是否有解决方案资源管理器,没有则在上方 视图(V) 选项卡下 选择 解决方案资源管理器(P)

4 打开 源文件
打开解决方案资源管理器中的 源文件 选项卡左侧的三角形,

下方会显示三个后缀为.cpp的文件

5打开文本编辑器,准备编辑$N.cpp
双击$N.cpp文件并打开

可以看见打开了文本编辑器

6在示例函数下方编写需要导出的函数

首先声明函数,仿照上方 $N_API 返回值类型 函数名(参数列表){
函数的具体实现
return 返回值;
}
返回值类型- C++中的数据类型,如int,bool等基本数据类型和 string等其他数据类型
函数名 一个符合标准的名字(见下),最好能表明函数用途
参数列表 包含 数据类型 变量名 , ..数据类型 变量名 , ....... 调用的时候需要指定这一数据的值,交给函数体处理.也就是 输入 的值
返回值 最后交给函数调用者的数据
如,在$N为DLL的源文件中,编写一个求和函数,函数名为sum,参数列表int a 和 intt b ,返回值类型也为int,则应当如下

此函数包含了 声明 DLL_APIint sum(int a,int b);两部分和对它的定义两部分
注意:请正确拼写函数名,请不要使用非ASCII字符来命名函数,请使用大驼峰(从第一个有效单词开始,首字母 大写 不大写 大写...),或小驼峰(同大驼峰,但首字母为 小写 大写 小写...)命名较长的函数.
注意为了JNA技术的另一头 Java ,您可能还需要查阅 JNA中 C++和Java的数据类型映射表

来减少复杂类型的使用,用更简便的返回值和参数类型;最好为基本数据类型,避免不必要的麻烦
注意 在实际工作中,将"函数值"(即运算后得到的结果)打印的意义是不大的,原因如下
1:平常使用的cout(C++),System.out.println(Java)中,其实占用较多资源
2:只打印不返回,相当于连贯的程序在此 断了 ,下方程序无法知晓"运算"结果(返回值)
3:一般习惯将内容打印到日志,而不是使用控制台输出,这样做对debug有意义,但不大,缺少日志那样的严格体系.
注意 请使用具体的数据类型 返回值类型 函数体 函数名等来替换上述和下述格式中的中文
因此,您应当将结果作为返回值进行返回,以此完成 C++和Java的混合编程
7 打开头文件
选择 头文件选项卡左侧的三角形,并且单击此处

可以看见下方展开的三个.h头文件

双击$N.h头文件进入文本编辑器界面

8:编写头文件
找到头文件文本的最后一行

单击并编写文本,格式为
extern "C" $N_API 返回值类型 函数名(参数列表);
(注:如 extern "C" DLL_API int sum(int a,int b); 条件在第五步中.)
您发现了吗,在 extern "C" 后方的内容和函数声明是完全一致的,您只需要将您已经在$N.cpp中写好的函数的定义复制到此处,并加上分号即可
(extern "C" 的作用 表明此函数在连接时按照C语言标准,而不是C++标准,解决函数意外重载和标准不同等问题)
如上述的sum函数应当写

完成后,您就可以选择上方选项卡中的 生成(B) ,选择 生成解决方案(B) 并单击了

稍作等待,如下方提示有错误,请仔细检查是否有遗漏和其他错误.若显示

则可以关闭IDE,找到此处

双击 ”x64“ 文件夹

双击”Debug“文件夹

然后找到后缀为.dll的动态链接库文件即为 JNA技术所需的 C++代码