JNI On Mac - 从Java程序中调用C函数
2016-03-14 19:26
381 查看
1.首先在Java中声明本地方法. Java编程语言使用关键字
2.使用
3.生成
4.根据生成的接口, 定义函数内容
5.使用C编译器编译C代码
6.编写调用代码
7.运行
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
相关文章推荐
- Java多态性
- spring学习笔记(5)属性文件引入使用
- JAVA知识点
- StringUtils 截取字符串 substring
- JAVA设计模式——责任链模式
- 二叉树的前/中/后序遍历
- java基础--线程池的使用
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记2
- AES加密时的 java.security.InvalidKeyException: Illegal key size 异常
- struts标签的的一些基本用法(ognl)
- 使用spring-session框架对会话session进行分布式管理
- java 实现获取当天,当周,当月,当季,当年的时间段
- Java中静态变量与静态方法的继承
- Java值传递和引用传递详细解说
- JavaAPI之Runtime类以及bat文件开启应用程序
- JAVA内存管理 第2章 直接VS自动管理内存
- [Android] 【笔记】Android Design 在Android Studio和Eclipse中的添加方法
- java中instance用法剖析
- JAVA自学日记——Part Ⅰ.
- java设计模式4-装饰者模式