java如何调用c++里面的方法?一、JAVA中所需要做java如何调用c代码包的工作
在JAVA程序中java如何调用c代码包,首先需要在类中声明所调用的库名称,如下:
在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断 。还需要对将要调用的方法做本地声明,关键字为native 。并且只需要声明,而不需要具体实现 。如下:
然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件 。
例如程序testdll.java,内容为:
用javac testdll.java编译它,会生成testdll.class 。
再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件 。
二、C/C++中所需要做的工作
对于已生成的.h头文件 , C/C++所需要做的,就是把它的各个方法具体的实现 。然后编译连接成库文件即可 。再把库文件拷贝到JAVA程序的路径下面 , 就可以用JAVA调用C/C++所实现的功能了 。
接上例子 。我们先看一下testdll.h文件的内容:
在具体实现的时候,我们只关心两个函数原型和这里JNIEXPORT和JNICALL都是JNI的关键字 , 表示此函数是要被JNI调用的 。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用 。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的 。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它 。
好 , 下面我们用testdll.cpp文件具体实现这两个函数:
编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件 。并且名称要与JAVA中需要调用的一致,这里就是goodluck.dll
把goodluck.dll拷贝到testdll.class的目录下,java testdll运行它,就可以观察到结果了 。
Java如何调用C代码--(Linux下实现Java本地方法)libMyNative.so:MyNative.o makefilegcc -Wall -rdynamic -shared -o libMyNative.so MyNative.oMyNative.o:MyNative.c MyNative.hgcc -Wall -c MyNative.c -I./ -I/sandbox/JAVA2S/jdk1.6.0_16/include -I/sandbox/JAVA2S/jdk1.6.0_16/include/linuxcl:rm -rf *.o *.solibMyNative.so:MyNative.o makefilegcc -Wall -rdynamic -shared -o libMyNative.so MyNative.o MyNative.o:MyNative.c MyNative.hgcc -Wall -c MyNative.c -I./ -I/sandbox/JAVA2S/jdk1.6.0_16/include -I/sandbox/JAVA2S/jdk1.6.0_16/include/linuxcl:rm -rf *.o *.so其中java如何调用c代码包,“/sandbox/JAVA2S/jdk1.6.0_16”为JDK安装目录“libMyNative.so”是Java类中static {System.loadLibrary("MyNative");}静态方法中参数+lib五、修改.bash_profile文件java如何调用c代码包,配置环境变量 , 由于生成的.so文件在当前目录下,故.bash_profile文件设置如下export LD_LIBRARY_PATH=./六、执行java MyNative命令,结果如下
java如何调用c代码包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java怎么调用c语言、java如何调用c代码包的信息别忘了在本站进行查找喔 。
推荐阅读
- 快手直播书法教程,快手书画直播间如何做起来
- 780元买什么手机好,78百元手机
- Linux链接命令软连接,linux软连接ln
- 区块链关键技术及应用,区块链关键技术及应用论文
- c语言中的openf函数 c语言 open函数
- C语言怎么判断三个数相邻,c语言判断三个数大小并从大到小输出
- 公众号运营销售技巧,微信公众号营销怎么做
- 怎么看电视比较好的软件,怎么看电视比较好的软件免费
- vb.net类怎么写 vbnet using