对该知识点的相关讨论,Oracle官方文档有专门的章节详细讲解,链接在此。
JAVA语言通过JNI机制支持调用C\C++语言编写的动态链接库。编写JAVA类,本案例使用的IDE是IntelliJ IDEA。
package com.company;
/**
* Created by hipilee on 2017/7/31.
*/
public class NativeMethod {
private native void sayHello();
}
build整个工程,在CMD里面进入NativeMethod.class文件所在位置。如下图可以看到NativeMethond.class在D:\LXT\project\java\out\production\java\com\company目录下,然后执行cd ..命令两次,到D:\LXT\project\java\out\production\java,即进入根包目录的上层目录即可。

执行javah命令
javah -classpath . -jni com.company.NativeMethod
在当前目录下就会生成名为com_company_NativeMethod.h的头文件。代码如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_company_NativeMethod */
#ifndef _Included_com_company_NativeMethod
#define _Included_com_company_NativeMethod
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_company_NativeMethod
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_company_NativeMethod_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
就可以将该头文件导入到C\C++工程进行代码编写。
其实还有很多细节,如java与c代码间各种类型参数传递的规则,在JAVA官方文档上有详细的说明。
927

被折叠的 条评论
为什么被折叠?



