《Java中通过JNI调用C函数的的过程》由会员分享,可在线阅读,更多相关《Java中通过JNI调用C函数的的过程(2页珍藏版)》请在金锄头文库上搜索。
1、文档供参考,可复制、编制,期待您的好评与关注! Java中通过JNI调用C函数的过程1、 编写Java代码 HelloJNI.Javapublic class HelloJNI /* * param args */本地方法声明native void printHello();native void printString(String str);/加载库static System.loadLibrary(hellojni);public static void main(String args) / TODO Auto-generated method stubHelloJNI myJNI =
2、 new HelloJNI();/调用本地方法myJNI.printHello();myJNI.printString(Hello World from printString fun);2、 编译 HelloJNI.java 生成HelloJNI.classD:UserslusiJNIJNI-2 Javac HelloJNI.java3、 生成C语言头文件 HelloJNI.hD:UserslusiJNIJNI-2 Javah HelloJNI如果程序有包的话要在类的前面加上包名 比如Javah com.pocket.HelloJNI/* DO NOT EDIT THIS FILE - it
3、 is machine generated */#include /* Header for class HelloJNI */#ifndef _Included_HelloJNI#define _Included_HelloJNI#ifdef _cplusplusextern C #endif/* * Class: HelloJNI * Method: printHello * Signature: ()V */JNIEXPORT void JNICALL Java_HelloJNI_printHello (JNIEnv *, jobject);/* * Class: HelloJNI *
4、Method: printString * Signature: (Ljava/lang/String;)V */JNIEXPORT void JNICALL Java_HelloJNI_printString (JNIEnv *, jobject, jstring);#ifdef _cplusplus#endif#endif4、 编写C程序 hellojni.c#include HelloJNI.h#include /添加名称为env与obj的两个参数JNIEXPORT void JNICALL Java_HelloJNI_printHello(JNIEnv *env, jobject ob
5、j) printf(Hello World!n); return;JNIEXPORT void JNICALL Java_HelloJNI_printString(JNIEnv *env, jobject obj, jstring string) const char *str = (*env)-GetStringUTFChars(env, string, 0); printf(%s!n); return;5、 生成C共享库 hellojni.dllD:UserslusiJNIJNI-2 cl -I D:Program FilesJavajdk1.8.0_25include -I DProgram FilesJavajdk1.8.0_25includewin32 -LD jnifunc.cpp -Fejnifunc.dll6、 执行Java程序D:UserslusiJNIJNI-2 java HelloJNI /