0

I tried to rebuild an android app wich contains tess-two as library. When using as is, I get this error

java.lang.NoSuchFieldError: no field with name='mNativeData' signature='I' in class Lcom/googlecode/tesseract/android/TessBaseAPI;

When reverting commit bc931c966f5a05745bd4be5833f551643589982d (private long mNativeData; changed to private int mNativeData;)

It then works. It might be related to my CPU/ABI.

I'm really not an android nor ndk expert, but this sounds as a bug to me. Should the cpp code not return a long, or the TessBaseAPI.java be adapted to recieve either a int or a long.

Thanks

4

1 に答える 1

1

参照しているコミットでは、64 ビット デバイスをサポートするために、Java コードと JNI コードの両方でそのフィールドが「long」に変更されました。

全体的に「長い」ままにしておく必要があります。

のプリコンパイル済みバージョンを使用するプロジェクトを使用している場合はtess.so、tess-two コードを、競合の原因となったコミットより前の古いバージョンにロールバックできます。次に例を示します。

git checkout 69b73ef5952c91b4d5d238f76a027a295f58575d

または、tess-two ビルド手順を使用して *.so ファイルの新しいバージョンをビルドし、プロジェクト内のそれらのファイルを置き換えることもできます。

于 2015-05-23T15:11:47.130 に答える