Scoffin 2024-05-05 17:07 采纳率: 0%
浏览 5
已结题

android paddleocr

大佬,这是那个飞桨ocr我按照你的方法打的moudel包,抱这种问题怎么解决ld: error: found local symbol '_edata' in global part of symbol table in file E:/Android/Car_Paddle/Car/paddle/src/main/cpp/../../../PaddleLite/cxx/libs/arm64-v8a/libpaddle_light_api_shared.so,在官方demo是可以运行的,而且我引用其他model的时候没有这样的问题

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-05 17:07
    关注

    引自免费微信小程序:皆我百晓生

    这个错误是由于动态链接库(.so文件)中的符号冲突导致的。在Android构建过程中,编译器发现了全局符号表中本地定义的_edata符号,这通常是可执行文件数据段结束地址的标记。

    要解决这个问题,你需要检查是否有多个库包含相同的符号。在这种情况下,最可能的原因是你同时链接了静态库和共享库,其中都包含了_edata符号。

    解决步骤如下:

    1. 确保只链接一个版本的Paddle Lite库。如果你之前同时链接了静态库和动态库,去掉其中一个。通常,在Android项目中,我们推荐使用动态库(.so 文件)以减小最终APK的大小。

    2. 检查你的CMakeLists.txt文件,确保你没有意外地添加了重复的库依赖。你应该看到类似这样的内容来链接动态库:

    find_library(PADDLE_LITE_LIB lite-lite)
    target_link_libraries(your_target ${PADDLE_LITE_LIB})
    
    1. 如果你是在C++代码中硬编码了链接,比如使用-lpaddle_lite等选项,确保只在一个地方进行了链接。

    2. 如果以上步骤都无法解决问题,你可能需要查看Paddle Lite的源码,确认是否存在多个实现_edata的地方。如果是这样,可能需要联系PaddlePaddle社区寻求帮助,看是否可以提供一个修复这个问题的版本。

    3. 最后,尝试清理缓存并重新构建你的项目,有时候问题可能是由于缓存引起的。在Android Studio中,可以通过菜单栏的Build -> Clean ProjectRebuild Project来完成这一步。

    请按照上述步骤进行操作,并根据需要调整代码片段以适应你的具体项目结构。如果问题仍然存在,请提供更多的上下文信息,以便我能更准确地帮助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月19日
  • 修改了问题 5月5日
  • 创建了问题 5月5日

悬赏问题

  • ¥15 在Starccm中相变材料的物理模型该如何选择?
  • ¥15 关于#android#的问题,请各位专家解答!
  • ¥200 PDF使用虚拟列表技术做渲染和加载带来的问题
  • ¥15 出现报错Debug Assertion Failed,如何解决?
  • ¥50 mcf中怎么实现导入的图片变成透明
  • ¥15 ruoyi-flowable流程设计配置的表单时,级联选择如何配置
  • ¥20 金属玻璃的剪切局部化程度怎么用ovito表示出来
  • ¥15 自定义控件在中文模式下不能输入数字
  • ¥15 关于#运维#的问题:用mail.abc.com 端口9696的方式同样能访问hr.abc.com 端口:6080 的页面两个网址都指向同一个外网ip(相关搜索:服务器)
  • ¥15 xgboost建模输出结果由三分类变成四分类