您的位置:首页 > 编程语言 > C语言/C++

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

2013-04-15 22:55 246 查看
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 __cplusplus
extern "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!


工程结构:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息