JNI工程搭建及编译##
- 建立Java工程
在具有C/C++比编译器的Eclipse中进行工程的创建,先创建一个简单的Java project,选项和一般同,这里仅仅需要将要调用的C/C++函数声明为native,注意C/C++中的数据类型Java中的转换. - 生成Java工程的头文件
将Java工程中的类文件和本地函数的声明定义好后,使用命令行,win+r,在Java工程中src文件夹下,即Java的包的第一层,使用javah命令:javah -jni java包名+类名
编译得到一个.h
类型的文件,其余的名字应该类似包名加类名,不过两者以_
下划线隔开. - 建立一个C/C++工程.
注意左下的Project type中选择Sharded Library类型,将源码和头文件一一添加之后,将上面产生的.h
文件考入到工程中,根据.h
文件中的函数声明修改C/C++工程的实现.
![注意工程选择为Shared Library](http://7xjjqm.com1.z0.glb.clouddn.com/c++ shared library.jpg) - 将
jni.h
头文件加入到C/C++工程中.
对工程右键选中Properties
选项,选择C/C++ Build
选项卡中的GCC C Complier
下的Include
选项中中增加:{$JAVA_HOME}/include
和{$JAVA_HOME}/include/win32
两个路径.
- 编译生成dll文件
在编译的时候注意,不是直接debug运行,先在工程中右键生成target再编译.将得到的dll放入到Java工程的根目录,根目录即同src文件夹所在的目录,自然是在path下,在Java中先使用静态代码块调用system.loadlibrary("libxxx"),然后就可以正常使用了.
ERROR:
- 编译C/C++工程的时候报如下错误:
在选项中的Miscellananeous加上-std=11即可