在开始之前,请先下载一个C编译器(tcc)并将其添加到系统路径中。
下载地址: http://mirror.veriportal.com/savannah//tinycc/tcc-0.9.25-win32-bin.zip
1. 编写Java源程序并编译:
- public class JavaToC {
- public native void helloC();
- static {
- System.loadLibrary("HelloWorld");
- }
- public static void main(String[] args) {
- new JavaToC().helloC();
- }
- }
- javac JavaToC.java
2. 利用编译后的class文件生成头文件:
- javah JavaToC
头文件内容:
- /* DO NOT EDIT THIS FILE - it is machine generated */
- #include
- /* Header for class JavaToC */
- #ifndef _Included_JavaToC
- #define _Included_JavaToC
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Class: JavaToC
- * Method: helloC
- * Signature: ()V
- */
- JNIEXPORT void JNICALL Java_JavaToC_helloC
- (JNIEnv *, jobject);
- #ifdef __cplusplus
- }
- #endif
- #endif
3.编写C程序(HelloWorld.c):
- #include <stdio.h>
- #include <jni.h>
- #include "JavaToC.h"
- JNIEXPORT void JNICALL Java_JavaToC_helloC(JNIEnv *env, jobject javaobj)
- {
- printf("Hello World: From C");
- return;
- }
其中,头文件jni.h在JDK的include目录中.
4. 生成共享内库(HelloWorld.dll):
- tcc HelloWorld.c -I "C:\Program Files\Java\jdk1.7.0_07\incl
- ude" -I "C:\Program Files\Java\jdk1.7.0_07\include\win32" -shared -o HelloWorld.
- dll
5.运行Java程序:
- java JavaToC
输出结果:
- Hello World: From C