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

Java Invoke C and C++ Using JNI

2012-11-09 12:45 411 查看

The Java side

1.建立Java工程JavaHello,编写java类

// Hello.class ,这里主要包名,因为后面的函数命名同包名也有联系的。

package test;

class Hello

2.用命令生成头文件

在bin目录下建立批处理文件,名称随意,用bat作为扩展名就行了。这里命名为run.bat

内容为:

set java_home=F:\dev-software\dev-soft\jdk\jdk1.5.0

set path=%java_home%\bin

set class_path=%java_home%\lib;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar

javah -jni test.Hello

@pause

#include <jni.h>

#ifndef _Included_test_Hello

#define _Included_test_Hello

#ifdef __cplusplus

#endif

#endif

The C side-Compiling the Library

1.建立标准C工程Cpro,并生成dll文件

1) 将生成的头文件test_Hello.h拷贝到C工程Cpro下

2) 编写C类Hello.c,内容为:

#include <jni.h>

#include "test_Hello.h"

#include <stdio.h>

JNIEXPORT void JNICALL Java_test_Hello_sayHello

(JNIEnv *env, jobject obj)

3) 在C工程Cpro下建立hello.def文件(用于定义导出的函数),内容为:

EXPORTS

Java_test_Hello_sayHello

4)在C工程Cpro下建立makefile文件,内容为:

step1:

gcc -c -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.c

step2:

gcc -shared -o hello.dll hello.o hello.def

5) 再Make Targets视图下,为Cpro工程添加两个Make
Target(对应makefile文件的内容),如下图:

step1:

g++ -c -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.cpp

step2:

g++ -shared -o hello.dll hello.o hello.def

3) 其他的几乎都不用改变也可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: