You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Open3D-Android库后调用含std::string参数方法遇未定义符号错误求助

问题分析与解决办法

错误核心原因

链接错误提示的undefined symbol本质是调用的函数签名与库中实际导出的签名不匹配,核心诱因集中在两点:

  1. C++标准库ABI不一致:NDK r17+默认使用LLVM的libc++,对应std::__ndk1命名空间的std::string。若编译open3d-core-android时未明确指定使用libc++,或混用了其他标准库(如gnustl),会导致库中导出的函数签名基于其他标准库的string,与项目中调用的std::__ndk1::string不兼容。
  2. ABI架构不匹配:编译open3d-core-android时若未指定目标ABI,可能仅生成默认架构(如x86),但项目指定了armeabi-v7a;arm64-v8a,导致找不到对应架构的库符号。

分步解决步骤

1. 重新编译open3d-core-android,强制匹配标准库与ABI

修改编译命令,明确指定C标准库为libc,并同步项目的目标ABI:

mkdir build & cd build
cmake -G Ninja ^
-DANDROID_NDK=C:\Users\vittorio.veloccia\AppData\Local\Android\Sdk\ndk\20.1.5948944 ^
-DCMAKE_INSTALL_PREFIX=../install ^
-DANDROID_STL=c++_shared ^
-DANDROID_ABI="armeabi-v7a;arm64-v8a" ^
.. && cmake --build .
  • -DANDROID_STL=c++_shared:强制使用libc++共享库,保证与项目标准库一致
  • -DANDROID_ABI="armeabi-v7a;arm64-v8a":同时编译两种目标架构,与项目ABI_FILTERS完全对应

2. 修正项目CMakeLists.txt配置

确保正确导入Open3D的头文件、库文件,并链接所有依赖:

# 设置Open3D安装路径
set(OPEN3D_PATH ${CMAKE_SOURCE_DIR}/../open3d-core-android/install)

# 导入Open3D头文件
include_directories(${OPEN3D_PATH}/include)

# 指定Open3D库文件路径(自动匹配当前编译ABI)
link_directories(${OPEN3D_PATH}/lib/${ANDROID_ABI})

# 链接目标库
target_link_libraries(
        native-lib  # 你的项目Native库名称
        Open3D
        android
        log
)

3. 校准项目Gradle配置一致性

在app模块的build.gradle中,确保NDK版本、STL配置与编译库时完全一致:

android {
    defaultConfig {
        ndkVersion "20.1.5948944"
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared"
            }
        }
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

4. 验证函数签名匹配

打开编译后Open3D的头文件Open3D/IO/ClassIO/ImageIO.h,确认CreateImageFromFile的声明为:

std::shared_ptr<geometry::Image> CreateImageFromFile(const std::string &filename);

若签名不符,需重新确认Open3D 0.9.0源码是否正确下载,避免版本混淆。


额外注意事项

  • 使用c++_shared时,Android Studio会自动打包libc++_shared.so,无需手动处理;
  • 编译open3d-core-android时的警告需重视,可能是标准库不兼容的前兆。

内容的提问来源于stack exchange,提问作者vittoema96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:33:41