Android Studio编译MATLAB Coder代码遇omp_init_nest_lock未定义错误
解决Android Studio中MATLAB Coder代码编译出现omp_init_nest_lock未定义的问题
检查CMakeLists.txt的OpenMP配置
- 确保CMake版本适配NDK25,在CMakeLists开头设置:
cmake_minimum_required(VERSION 3.18.1) - 启用OpenMP并关联编译、链接参数,替换
你的目标名称为实际CMake目标(如app或自定义库名):find_package(OpenMP REQUIRED) if(OpenMP_C_FOUND) target_compile_options(你的目标名称 PRIVATE ${OpenMP_C_FLAGS}) target_link_libraries(你的目标名称 PRIVATE ${OpenMP_C_LIBRARIES}) endif()
确认MATLAB Coder的生成配置
- 重新检查MATLAB Coder的代码生成设置:必须在性能优化选项中开启OpenMP支持。如果生成代码时未启用该选项,代码会调用OpenMP函数但未正确关联依赖,导致链接错误。
锁定NDK工具链的编译器
- 在app模块的build.gradle中明确指定NDK版本和clang工具链,避免使用系统默认编译器:
android { ndkVersion "25.2.9519653" externalNativeBuild { cmake { path "CMakeLists.txt" arguments "-DANDROID_STL=c++_shared", "-DANDROID_TOOLCHAIN=clang" } } }
手动链接gomp库(备选方案)
- 若上述配置无效,可在CMakeLists.txt中手动指定链接OpenMP的实现库:
target_link_libraries(你的目标名称 PRIVATE gomp)
清理重建项目
- 执行Android Studio的
Build -> Clean Project,再执行Build -> Rebuild Project,清除旧编译缓存的影响。
内容的提问来源于stack exchange,提问作者Matheus Fortunato Alves
相关产品推荐
相关产品推荐

