Java中调用c语言示例
来源:互联网 发布:人脸识别用什么算法 编辑:程序博客网 时间:2024/05/21 09:10
java中调用c语言,主要是通过JNI(即java native interface)实现的,在windows下调用c语言实现生成的.dll文件来执行;unix/linux下是.so文件。下面讲解实例实现的简单步骤:
1.编写java程序:
public class javatest{
static{
System.loadLibrary("call");
}
public native static int xingxingdeng(int i);
public static void main(String []args){
javatest jc = new javatest();
int j;
j = jc.xingxingdeng(4);
System.out.println(j);
}
}
注意:
i).xingxingdeng()在java中声明时候需要加上native关键字,表示其是需要在c语言中实现的函数;
ii).需要在调用c语言的类中加上这句话
static{
System.loadLibrary("call");
}
其中,call即是需要在c中实现的函数的名字;
2.运行java命令编译:javac javatest.java
3.运行java命令生成头文件:javah javatest
4.利用devc++生成c语言的实现.dll文件,并将其添加到javatest类的路径之下:
devC++生成dll文件步骤:打开devc++ ==> 文件 ==>新建 ==> 项目 ==> 选择DLL ==>添加项目名字(call)==>确定
此处call里面会有两个文件,一个是dllmain.cpp,一个是dll.h,我们需要编写的就是dllmain.cpp文件;
打开第3步中生成的头文件javatest.h,可以看到里面extern "c"{}中有函数的声明,此函数即是需要在dllmain.cpp中实现,拷贝到dllmain.cpp中进行实现即可
另外,需要在dllmain.cpp中加入3中生成的头文件,实现如下:
#include "javatest.h"
JNIEXPORT jint JNICALL Java_javatest_xingxingdeng(JNIEnv *, jclass, jint p)
{
int j = p*p;
return j;
}
5.编译即可,编译时候可能会报错告诉你缺少两个头文件,需要将其拷贝到当前路径之下,这两个头文件是:
jni.h ,位于jdk下的include目录中
jni_md.h,位于jdk下的include/win32目录中
至此,编译生成在当前目录下存在的call.dll文件
6.java调用命令之后会自动调用call.dll文件:java javatest即可看到结果。
- Java中调用c语言示例
- JAVA中调用C语言接口
- java中调用C语言代码
- java中调用C语言代码
- JAVA中调用C语言方法
- java程序中调用c语言库
- JAVA中调用C语言接口
- java调用C语言
- Java调用C语言
- Java调用C语言
- python调用c语言动态库示例
- Java语言与C语言混合编程(2)--在Java中调用C语言本地库
- Lua教程(三):C语言、C++中调用Lua的Table示例
- Lua教程(三):C语言、C++中调用Lua的Table示例
- JAVA中调用C语言函数(接口)
- 在C语言中调用Java方法获取方法签名
- JAVA中native方法调用C语言实现学习
- java中调用C语言生成的exe文件
- 职场必备:简历信息图怎么做?
- 随便写写
- 关于Web里面常有的(More )About US
- cocos2D-x 3.5 引擎解析之--引用计数(Ref),自动释放池(PoolManager),自动释放池管理器( AutoreleasePool)
- 关于机顶盒焦点的文章
- Java中调用c语言示例
- Android Native/Tombstone Crash Log 详细分析
- Utterance API
- Android实现首次点击返回键提示信息,第二次点击退出应用
- BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
- 一项很有生命力的技术(Ajax)
- 无线报文简单分析
- D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- BaseDataProcessor API