-2

我需要通过 JNI 从我的 Java 代码中调用现有的 C 函数。正如 JNI 所建议的那样,我使用 Javah 工具为本机 C 函数创建了一个头文件,然后将其包含在 C 文件中。

我是否需要更改现有 C 函数的函数原型(在头文件中生成)?

如果我的示例代码有任何错误,请纠正我

示例代码:

         #include <stdio.h>
         #include <jni.h>
         #include "myHeader.h"
         int main(){
int result=Nativecall();
return 0;
 }
int NativeCall(){  //Native Method implementation
int sample=10;
return sample;
 }
  _______________
   myHeader.h

   JNIEXPORT jint JNICALL Java_test__NativeCall
     (JNIEnv *, jobject);
4

1 回答 1

0

不,您不必做任何事情,javah 为您完成工作,只需将头文件包含在您的 C 文件中并实现头文件中定义的功能。所以根据你的情况应该是这样的,你可以看到我们使用的原型和javah在头文件中定义的一样

JNIEXPORT jint JNICALL
    Java_test__NativeCall
                    (JNIEnv *env, 
                    jobject callingObject)
    {
    int sample=10;
    return (jint)sample;
    }
于 2013-01-05T19:48:16.863 回答