Java使用JNI调用C本地代码

Java代码如下,CallNative.java:

即使我们还没有写ctest库,上面的java代码也是可以编译通过的,因为它会在在运行时加载依赖库。使用javac编译:

编译完生成CallNative.class文件。运行程序,会报错,因为还没有制作c本地库:

下面我们来创建c库-ctest,首先从.class文件中生成c的头文件:

创建ctest.c文件,实现test_c函数:

把上面的c代码编译为动态库,编译时注意指定java头文件目录:

我的环境时Ubuntu使用default-jdk,在mac上把so改为dylib,在Windows上改为dll。

运行程序:

-Djava.library.path指定库所在目录。


如果使用++函数,注意在函数实现前加extern “C”

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注