将Tess-two(用于Android的Tesseract工具)库集成到Android Studio并构建NDK时出现集成问题

14
我想在Android Studio中导入tess-two库,但编译后出现ndk构建错误。我已经尝试了StackOverflow上给出的解决方案,例如:Execution failed for task ':app:compileDebugNdk',但这并没有解决我的问题。请指出我哪里做错了。它显示以下错误:
Error:error: undefined reference to 'isnanf'

Error:error: undefined reference to '__isinff'
Error:error: undefined reference to 'isnanf'
[arm64-v8a] Install        : libtess.so => libs/arm64-v8a/libtess.so
Error:error: undefined reference to 'isnanf'
Error:error: undefined reference to '__isinff'
Error:error: undefined reference to 'isnanf'
[x86_64] Install        : libjpgt.so => libs/x86_64/libjpgt.so
Error:error: linker command failed with exit code 1 (use -v to see invocation)
Error:error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi-v7a/libtess.so] Error 1

make: *** Waiting for unfinished jobs....
make: *** [obj/local/armeabi/libtess.so] Error 1
make: Leaving directory `D:/OCR/tess-two-master/tess-two-master/tess-two'
:tess-two:ndkBuild FAILED

Error:Execution failed for task ':tess-two:ndkBuild'.
Process 'command 'D:\SDK\sdk\ndk-bundle/ndk-build.cmd'' finished with non-zero exit value 2  

2
如果你只需要一个可用的库,你可以使用预编译版本(请参见此处的“用法”)或使用NDK r10e进行构建。 - rmtheis
谢谢,它已经使用 r10e 编译成功了。 - Rajan1404930
嗨,我在Ubuntu中使用相同的库,但是我遇到了这个错误:Error:Execution failed for task ':tess-two:ndkBuild'。
启动进程“command 'ndk-build'”时出现问题。请尽快帮助我。谢谢。
- Naveen
@rmtheis 你好,您的意思是我们只需访问链接,然后克隆tess-two并获取一个训练文件,创建一个新的Android Studio项目,只需编辑应用程序模块的build.gradle文件以将tess-two添加为外部依赖项(通过添加单个行)?这是您的意思吗? - user285372
首先使用NDK编译您的tess-two库,然后将其作为库导入。 - Rajan1404930
1个回答

11

事实证明,此错误的根本原因是NDK r11不支持android-8(Android 2.2.x),而NDK r10支持。

将Application.mk文件更改为使用APP_PLATFORM := android-9可以解决此问题。


你知道这个更改在哪里有记录吗? - bleater
1
实际上,NDK仍然包括android-3作为最早可定位的平台。将目标更改为android-9之所以适用于isnan/isnanf,是因为这些符号恰好被此变更集从libm.so中删除:https://android.googlesource.com/platform/development/+/977bf483813dd117c149880a389c97df1b881805%5E!/ - bleater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接