- 测试文件test.cpp,可见是验证MyFunc类的方法是否正常:
#include
#include"NativeLibrary.h"
using namespace NativeLibrary;
int main(){
MyFunc myFunc;
int value = myFunc.add(1, 2);
std::cout << "add value " << value << std::endl;
return 0;
}
- 执行以下命令,编译NativeLibrary.cpp,得到so文件libMyFunc.so:
g++ -std=c++11 -fPIC -shared NativeLibrary.cpp -o libMyFunc.so
- 执行以下命令,编译和链接test.cpp,得到可执行文件test:
g++ test.cpp -o test ./libMyFunc.so
- 运行可执行文件试试,命令是./test:
root@docker:~/javacpp/cpp# ./test
add value 3
-
将libMyFunc.so文件复制到/usr/lib/目录下
-
test的执行结果符合预期,证明so文件创建成功,记住下面两个关键信息,稍后会用到:
-
头文件是NativeLibrary.h
-
so文件是libMyFunc.so
- 接下来是java部分
Java开发
-
简单起见,咱们手写java文件,不创建maven工程
-
新建一个文件夹,我这边是/root/javacpp/java,java开发都在此文件夹下进行
-
将文件javacpp-1.5.5.jar复制到/root/javacpp/java/目录下
-
出于个人习惯,喜欢将java类放在packgage下,因此建好package目录,我这里是com/bolingcavalry/javacppdemo,在我这里的绝对路径就是/root/javacpp/java/com/bolingcavalry/javacppdemo
-
将文件NativeLibrary.h复制到com/bolingcavalry/javacppdemo目录下
-
在com/bolingcavalry/javacppdemo目录下新建Test.java,有几处要注意的地方稍后会提到:
package com.bolingcavalry.javacppdemo;
import org.bytedeco.javacpp.*;
import org.bytedeco.javacpp.annotation.*;
@