Java 调用 C程序 之HelloWorld

15 篇文章 0 订阅

在开始之前,请先下载一个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  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值