JAVA通过JNI调用C函数Demo
来源:互联网 发布:淘宝众筹有回报吗 编辑:程序博客网 时间:2024/06/11 07:01
废话少说直接上代码.我们的JAVA文件"TestJni.java"中的代码看起来是这样纸的:
package mm.nn.oo;public class TestJni { public native void ShowStr(String Str); public native int Add(int x,int y); static { System.loadLibrary("TestJni"); } public static void main(String[] args) { new TestJni().ShowStr("This String IS From JAVA!"); System.out.println(new TestJni().Add(2,3)); }}接下来我们生成相应的C的.H文件.具体过程看本博客相应文章此处不再赘述.生成后的.H文件看起来是这样子的:
#include <jni.h>#ifdef __cplusplusextern "C" {#endif JNIEXPORT void JNICALL Java_mm_nn_oo_TestJni_ShowStr(JNIEnv *pEnv,jobject Obj,jstring Str); JNIEXPORT jint JNICALL Java_mm_nn_oo_TestJni_Add(JNIEnv *pEnv, jobject Obj, jint m, jint n);#ifdef __cplusplus}#endif为了简便我们将上一步生成的.H文件直接改成.C文件并在其中实现两个函数代码如下:
JNIEXPORT void JNICALL Java_mm_nn_oo_TestJni_ShowStr(JNIEnv *pEnv,jobject Obj,jstring Str){ const char* pStr = (*pEnv)->GetStringUTFChars(pEnv,Str,0); printf("%s\n",pStr); (*pEnv)->ReleaseStringUTFChars(pEnv,Str,pStr);}JNIEXPORT jint JNICALL Java_mm_nn_oo_TestJni_Add(JNIEnv *pEnv, jobject Obj, jint m, jint n){ return m+n;}然后我们将上一步的.C文件生成.DLL文件.你可以新建一个DLL工程也可以用命令行.我们这里选择后者来生成.具体步骤看上传的附件即可.
然后我们用javac TestJni.java命令生成对应的.CLASS文件并拷贝到与包名mm.nn.oo对应的文件夹mm\nn\oo下.然后执行命令java mm.nn.oo.TestJni即可.
本Demo涉及到的文件下载地址:http://t.cn/8swtB4A希望对大家有所帮助.文章讲的不是很详细但是大家稍稍摸索下就可以明白的拜拜
1 0
- JAVA通过JNI调用C函数Demo
- CPP通过JNI调用JAVA函数Demo
- Java通过JNI调用C/C++函数
- Java通过JNI调用C的一个小DEMO
- Java通过JNI调用C的一个小demo
- AndroidStudio建立完整JNI开发工程流程及Java通过JNI调用C函数
- JAVA通过JNI调用C++函数详解
- java通过jni调用C程序
- Android C 通过JNI 调用JAVA
- java通过jni调用c库
- Java通过JNI调用C语言
- Java 通过 JNI 调用 C/C++ 类库
- Java通过jni调用c语言方法
- JNI小程序:Java通过JNI调用C程序
- JNI Java调用c/c++代码 demo (用VS2010)
- JNI学习--通过Java应用调用C语言的函数打印hello,world
- android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
- C/C++调用java---JNI常用函数
- 卷一 内核源代码分析 第二章 异常 2.2.4 OMAP4的中断体系 图书试读版-请勿转载
- PHP图表插件的使用
- Ubuntu桌面版系统配置JDK
- ACDB_REGISTER_OBJECT_ENTRY_AUTO宏详解
- javascript 对象的创建模式 总结:八类
- JAVA通过JNI调用C函数Demo
- 黑马程序员 Android 简单加载一个dialog
- Linux--tar打包
- [JWFD应用]开源路由器的一些原理
- Windows多线程的同步与互斥
- Oracle获取系统时间及格式化
- JS函数的几种定义方式
- 正则表达式的历史
- HOG(方向梯度直方图)