1、c++动态库头文件 cplus.h内容如下
cpp
#ifndef _CPLUS_H_
#define _CPLUS_H_
int sayCplus();
#endif
2、c++代码 文件cplus.cpp 内容如下
cpp
#include<stdio.h>
extern "C"
{
int sayCplus()
{
printf("Hello, C++\n");
return 0;
}
}
3、通过下面命令编译成动态库文件 动态库为 mycpp
cpp
g++ -shared -o mycpp.dll cplus.cpp
4、maven项目添加插件
XML
<plugin>
<groupId>com.nativelibs4java</groupId>
<artifactId>maven-jnaerator-plugin</artifactId>
<version>0.12</version>
</plugin>
5、如下图创建目录 jnaerator (src/main/jnaerator) 和文件config.jnaerator (src/main/jnaerator/config.jnaerator)
6、 config.jnaerator 文件内容如下
html
// 生成 java 文件名称: mycpp -> MycppLibrary.java c++动态库名称为 mycpp
-library mycpp
// 生成包名 com.pojo.util -> package com.pojo.util;
-package com.pojo.util
// 运行环境使用 jna
-runtime JNA
-D__cplusplus=1
// 忽略过期方法
-skipDeprecated
// 忽略指定方法
-skipFunctions im_.*
-skipFunctions imb_.*
// 指定头文件
C:\Users\Administrator\cplus.h
7、运行插件,生成java代码,双击
jnaerator:generated
8、生成java代码如下
9、测试生成的代码如下
java
public class MyCppTest {
public static void main(String[] args) {
// int num = MyCpp.INSTANCE.sayCplus();
// System.out.println(num);
// int num2 = MyCpp2.INSTANCE.sayCplus();
// System.out.println(num2);
int num2 = MycppLibrary.INSTANCE.sayCplus();
System.out.println(num2);
}
}