jni和java的接口函数是用c写的,文件格式是.c,而.c里面的具体实现函数写在了.cpp文件里面,为什么ndk无法编译.cpp文件,求解答

解决方案 »

  1.   

    为什么.c中调用.cpp暴露的函数时找不到.cpp中暴露的函数啊
    extern "C" {
    extern void appInit();
    extern void appRender( int width, int height);
    }
    怎么找不到appInit()和appRendr()
      

  2.   

    extern "C" {JNIEXPORT jstring JNICALL Java_com_jni_move_jni_MoveNative_move
      (JNIEnv *, jobject);
    }
    javah  命令 可以自动生成对应的.h文件
      

  3.   

    你理解错了,extern "C" {
    JNIEXPORT jstring JNICALL Java_com_jni_move_jni_MoveNative_move(JNIEnv *, jobject);
     appInit();
     appRender( int width, int height);
    }
    是暴露给java认识的,我这个函数写在.c文件中纯粹从语言语法,但它的内部函数是appInit()函数,这个函数在另外一个.cpp文件中,用了c++中的stl,现在同时编译,就不认识appInit()说是没有声明
      

  4.   


    难道 你去调用C++的函数 没有include 对应的头文件
      

  5.   

    加了啊,但是全部改成.c或者全部改成.cpp就可以编译,觉得很诡异