Android NDK: не реализована нативная версия xxxxxx
Я делаю проект с использованием Tess-два, я хочу использовать метод pixConvertRGBToLuminance
, но это всегда ошибка:
No implementation found for native Lcom/googlecode/leptonica/android/Pix;.nativePixConvertRGBToLuminance:(I)I.
Мой код Java:
public static Pix pixConvertRGBToLuminance(Pix pixs){
if (pixs == null)
throw new IllegalArgumentException("Source pix must be non-null");
int nativePixd = nativePixConvertRGBToLuminance(pixs.getNativePix());
return new Pix(nativePixd);
}
Мой код.cpp это:
jint Java_com_googlecode_letonica_android_Pix_nativePixConvertRGBToLuminance(JNIEnv *env,
jclass clazz, jint nativePixs){
PIX *pixs = (PIX *)nativePixs;
LOGE("------------------>Failed to find native pixConvertRGBToLuminance File");
PIX *pixd = pixConvertRGBToLuminance(pixs);
return (jint) pixd;
}
Оригинальный код Лептоники:
PIX * pixConvertRGBToLuminance(PIX *pixs)
{
return pixConvertRGBToGray(pixs, 0.0, 0.0, 0.0);
}`
так почему я всегда виноват?
2 ответа
extern "C" jint Java_com_googlecode_letonica_android_Pix_nativePixConvertRGBToLuminance(JNIEnv *env,
jclass clazz, jint nativePixs){
PIX *pixs = (PIX *)nativePixs;
LOGE("------------------>Failed to find native pixConvertRGBToLuminance File");
PIX *pixd = pixConvertRGBToLuminance(pixs);
return (jint) pixd;
}
Другой вопрос, где ответ - искажение имени в C++ - объявите вашу функцию как èxtern "C"