Java 调用 C程序 之HelloWorld

来源:互联网 发布:isp 网络拓扑 编辑:程序博客网 时间:2024/05/22 15:17

在开始之前,请先下载一个C编译器(tcc)并将其添加到系统路径中。

下载地址: http://mirror.veriportal.com/savannah//tinycc/tcc-0.9.25-win32-bin.zip

 


    

 

1. 编写Java源程序并编译:

 

 

Java代码  收藏代码
  1. public class JavaToC {  
  2.   
  3.     public native void helloC();  
  4.       
  5.     static {  
  6.         System.loadLibrary("HelloWorld");  
  7.     }  
  8.       
  9.     public static void main(String[] args) {  
  10.         new JavaToC().helloC();  
  11.     }  
  12. }  

 

 

Command代码  收藏代码
  1. javac JavaToC.java  
 

 

2. 利用编译后的class文件生成头文件:

 

 

Command代码  收藏代码
  1. javah JavaToC  

 

    头文件内容:

 

C代码  收藏代码
  1. /* DO NOT EDIT THIS FILE - it is machine generated */  
  2. #include  
  3. /* Header for class JavaToC */  
  4.    
  5. #ifndef _Included_JavaToC  
  6. #define _Included_JavaToC  
  7. #ifdef __cplusplus  
  8. extern "C" {  
  9. #endif  
  10. /* 
  11. * Class:     JavaToC 
  12. * Method:    helloC 
  13. * Signature: ()V 
  14. */  
  15. JNIEXPORT void JNICALL Java_JavaToC_helloC  
  16. (JNIEnv *, jobject);  
  17.    
  18. #ifdef __cplusplus  
  19. }  
  20. #endif  
  21. #endif  
 

3.编写C程序(HelloWorld.c):

 

 

C代码  收藏代码
  1. #include <stdio.h>  
  2. #include <jni.h>  
  3. #include "JavaToC.h"  
  4. JNIEXPORT void JNICALL Java_JavaToC_helloC(JNIEnv *env, jobject javaobj)   
  5. {  
  6.   printf("Hello World: From C");  
  7.   return;  
  8. }  

 

其中,头文件jni.h在JDK的include目录中.

 


    

 

 

4. 生成共享内库(HelloWorld.dll):

 

 

Command代码  收藏代码
  1. tcc HelloWorld.c -I "C:\Program Files\Java\jdk1.7.0_07\incl  
  2. ude" -I "C:\Program Files\Java\jdk1.7.0_07\include\win32" -shared -o HelloWorld.  
  3. dll  

 

5.运行Java程序:

 

 

Command代码  收藏代码
  1. java JavaToC  

 

输出结果:

 

Command代码  收藏代码
  1. Hello World: From C  
原创粉丝点击