在头文件中调用函数

时间:2016-07-18 02:00:55

标签: c gcc java-native-interface header-files

我想知道如何在头文件中调用函数。

例如......

example.h

#ifndef NPT_IMM32_H
#define NPT_IMM32_H

#ifndef NPT_API
    #ifdef  _THIS_IS_IMPLE_
        #define NPT_API     __declspec(dllexport)
    #else
        #define NPT_API     __declspec(dllimport)
    #endif 
#endif 

NPT_API char * __stdcall npt_GetVer();

我想在calling.c JNI文件中调用npt_GerVer()函数

calling.c
#include <jni.h>
#include <stdio.h>
#include <stdbool.h>
#include <windows.h>

#include "example.h"

JNIEXPORT void JNICALL Java_FingerPrintJNI_GetVer(JNIEnv *env, jobject thisObj){
    // Here How to call the npt_GerVer() function ? 
    return;
}

如您所见,我想在Java_FingerPrintJNI_GetVer函数中调用“npt_GerVer()函数”。 我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

以完全相同的方式和方式调用函数,无论是在头文件中还是在实际的翻译单元本身中声明。

在这种情况下:

npt_GetVer();

就是这样。声明函数的位置并不重要,只要它在使用或引用之前声明。

唯一的要求是包含头文件。在预处理阶段,所有头文件都在其#include引用中进行逻辑插入,就像头文件的内容在逻辑上替换#include语句一样。最终结果是单个C++翻译单元。

如果要手动将所有#include语句替换为相应头文件的内容(注意条件编译,包括警卫等等),最终结果将完全相同。

您的原始问题已标记为C++,但您指的是C;但是,这同样适用于CC++