Java通过JNI调用C/C++函数

来源:互联网 发布:python 流量 预测 编辑:程序博客网 时间:2024/05/01 21:14

Java代码:

public class JNIHelloWorld {public native void helloWorld();static {System.loadLibrary("hellojni");}public static void main(String[] args) {JNIHelloWorld hello = new JNIHelloWorld();hello.helloWorld();}}

C函数原型头文件:(javah生成)

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class JNIHelloWorld */#ifndef _Included_JNIHelloWorld#define _Included_JNIHelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class:     JNIHelloWorld * Method:    helloWorld * Signature: ()V */JNIEXPORT void JNICALL Java_JNIHelloWorld_helloWorld  (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif

C实现文件:

#include <jni.h>#include <stdio.h>#include "JNIHelloWorld.h"JNIEXPORT void JNICALL Java_JNIHelloWorld_helloWorld  (JNIEnv * env, jobject javaObject) {     printf("Hello World!\n");   return;}

生成dll(利用Visual Studio 的cl命令)

cl -I"<JDK_HOME>\include" -I"<JDK_HOME>\include\win32" -DL XXX.c -FEXXX.dll

运行Java的main方法:

Hello World!


工程结构:



原创粉丝点击