gpt4 book ai didi

android - NDK冲突c/c++

转载 作者:行者123 更新时间:2023-11-28 07:27:01 24 4
gpt4 key购买 nike

我在一个带有 C++ 文件 (NDK) 的 Android 项目中工作,但我遇到了一个问题未找到 native 方法,当我添加外部“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

这个traitement_jni.h.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){
...
}
}

最佳答案

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

头文件:

extern "C" {
JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter(
JNIEnv *,
jclass, // <---- here
jstring);
}

源文件:

...
extern "C" {
JNIEXPORT void JNICALL Java_com_marwen_parojet_1ocr_12_PostPhot_Traiter(
JNIEnv* env,
jobject, // <---- here
jstring path){
...
}
}

关于android - NDK冲突c/c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com