NDK冲突c/c++; 我在一个Android项目中使用C++文件(NDK),但是我遇到了一个问题。 添加时未找到本机方法 外部“C”{ }我遇到了一个新问题,c函数“..”的声明与之前的.h声明冲突 这是我的密码 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_marwen_parojet_ocr_2_PostPhot */ #ifndef _Included_com_marwen_parojet_ocr_2_PostPhot #define _Included_com_marwen_parojet_ocr_2_PostPhot #ifdef __cplusplus extern "C" { #endif /* * Class: com_marwen_parojet_ocr_2_PostPhot * Method: Traiter * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter (JNIEnv *, jclass, jstring); #ifdef __cplusplus } #endif #endif /*不要编辑此文件-它是机器生成的*/ #包括 /*com\u marwen\u parojet\u ocr\u 2\u Postshot类标题*/ #如果NDEF包括com、marwen、parojet、ocr、2个Postshot #定义-包括\u com\u marwen\u parojet\u ocr\u 2\u PostPhot #ifdef_uucplusplus 外部“C”{ #恩迪夫 /* *课程名称:com_marwen_parojet_ocr_2_PostPhot *方法:Traiter *签名:(Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java\u com\u marwen\u parojet\u 1ocr\u 12\u Postshot\u Traiter (JNIEnv*,jclass,jstring); #ifdef_uucplusplus } #恩迪夫 #恩迪夫

NDK冲突c/c++; 我在一个Android项目中使用C++文件(NDK),但是我遇到了一个问题。 添加时未找到本机方法 外部“C”{ }我遇到了一个新问题,c函数“..”的声明与之前的.h声明冲突 这是我的密码 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_marwen_parojet_ocr_2_PostPhot */ #ifndef _Included_com_marwen_parojet_ocr_2_PostPhot #define _Included_com_marwen_parojet_ocr_2_PostPhot #ifdef __cplusplus extern "C" { #endif /* * Class: com_marwen_parojet_ocr_2_PostPhot * Method: Traiter * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter (JNIEnv *, jclass, jstring); #ifdef __cplusplus } #endif #endif /*不要编辑此文件-它是机器生成的*/ #包括 /*com\u marwen\u parojet\u ocr\u 2\u Postshot类标题*/ #如果NDEF包括com、marwen、parojet、ocr、2个Postshot #定义-包括\u com\u marwen\u parojet\u ocr\u 2\u PostPhot #ifdef_uucplusplus 外部“C”{ #恩迪夫 /* *课程名称:com_marwen_parojet_ocr_2_PostPhot *方法:Traiter *签名:(Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java\u com\u marwen\u parojet\u 1ocr\u 12\u Postshot\u Traiter (JNIEnv*,jclass,jstring); #ifdef_uucplusplus } #恩迪夫 #恩迪夫,android,c++,c,android-ndk,Android,C++,C,Android Ndk,这项叛逆行为 而.cpp文件是 #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv/cv.h> #include "opencv2/ml/ml.hpp" #include <android/log.h> #include <jni.h> #include "traitement_jni.h" #inc

这项叛逆行为 而.cpp文件是

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/cv.h>
#include "opencv2/ml/ml.hpp"
#include <android/log.h>
#include <jni.h>
#include "traitement_jni.h"
#include <stdlib.h>
extern "C" {
JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter(JNIEnv* env,    jobject,jstring path){
  ...
 }
 }
#包括
#包括
#包括
#包括“opencv2/ml/ml.hpp”
#包括
#包括
#包括“traitement_jni.h”
#包括
外部“C”{
JNIEXPORT void JNICALL Java\u com\u marwen\u parojet\u 1ocr\u 12\u Postshot\u Traiter(JNIEnv*env、jobject、jstring路径){
...
}
}

您似乎在声明中传递了一个
jclass
,但在定义中传递了一个
jobject
。如果这两种类型不是同一类型的别名,则这不起作用:不能重载外部“C”函数

头文件:

extern "C" {
    JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter(
        JNIEnv *,
        jclass,    // <---- here
        jstring);
}
extern“C”{
JNIEXPORT void JNICALL Java\u com\u marwen\u parojet\u 1ocr\u 12\u Postshot\u Traiter(
JNIEnv*,
jclass//
...
extern "C" {
    JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter(
        JNIEnv* env,
        jobject,   // <---- here
        jstring path){
        ...
    }
}