我试图重建一个包含 tess-two 作为库的 android 应用程序。按原样使用时,出现此错误
java.lang.NoSuchFieldError: no field with name='mNativeData' signature='I' in class Lcom/googlecode/tesseract/android/TessBaseAPI;
还原提交时 bc931c966f5a05745bd4be5833f551643589982d(private long mNativeData;更改为 private int mNativeData;)
然后就可以了。这可能与我的 CPU/ABI 有关。
我真的不是 android 或 ndk 专家,但这对我来说听起来像是一个错误。如果 cpp 代码不返回 long,或者 TessBaseAPI.java 适应接收 int 或 long。
谢谢
最佳答案
在您提到的提交中,为了支持 64 位设备,该字段在 Java 和 JNI 代码中都被更改为“long”。
应该全线留作“多头”。
如果您使用的项目使用了 tess.so
的预编译版本,您可以将 tess-two 代码回滚到早于导致冲突的提交的旧版本,因为示例:
git checkout 69b73ef5952c91b4d5d238f76a027a295f58575d
或者,您可以使用 tess-two 构建指令构建新版本的 *.so 文件,并在您的项目中替换这些文件。
关于java - tess-two reciving int 但等待很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411185/