您的位置:首页 > 编程语言 > Java开发

JNI On Mac - 从Java程序中调用C函数

2016-03-14 19:26 381 查看
1.首先在Java中声明本地方法. Java编程语言使用关键字
native
表示本地方法, 本地方法可以是静态的, 也可以是非静态的.

class HelloNative
{
public static native void greeting();
}

2.使用
javah
工具生成头文件

javah HelloNative

3.生成
HelloNative.h
, 查看其内容

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */

#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     HelloNative
* Method:    greeting
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_greeting
(JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

4.根据生成的接口, 定义函数内容

#include "HelloNative.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_HelloNative_greeting(JNIEnv* env, jclass cl)
{
printf("Hello Native World!\n");
}

5.使用C编译器编译C代码

export JDK=/System/Library/Frameworks/JavaVM.framework/Versions/A
gcc -dynamiclib \
-I $JDK/Headers \
-shared \
-o libHelloNative.jnilib \
HelloNative.c

6.编写调用代码

class HelloNativeTest
{
public static void main(String[] args)
{
HelloNative.greeting();
}

static
{
System.loadLibrary("HelloNative");
}
}

7.运行

javac HelloNative.java
javac HelloNativeTest.java
java -Djava.library.path=. HelloNativeTest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: