Why does my code generated from MATLAB Coder fail to compile because of missing function definitions for "omp_init_nest_lock" and "omp_destroy_nest_lock"?

23 ビュー (過去 30 日間)
Why does my code generated from MATLAB Coder fail to compile because of missing function definitions for "omp_init_nest_lock" and "omp_destroy_nest_lock"?
I am trying to compile the code on a Linux operating system and it fails because the compiler cannot find definitions for the mentioned functions. I do not know why these functions are appear in my code. I also noticed that the same code compiles on a different computer with a Windows operating system using Microsoft Visual Studio. 

採用された回答

MathWorks Support Team
MathWorks Support Team 2021 年 8 月 23 日
編集済み: MathWorks Support Team 2021 年 8 月 26 日
This issue is typically encountered if the Linux computer on which the code is being compiled has an outdated compiler. The functions "omp_init_nest_lock" and "omp_destroy_nest_lock" are implementations of "OpenMP" specifications and they should be provided by the compiler. On a Linux computer, installing the recommended version of the GCC compiler should resolve this issue. 
Information about supported compilers for the current MATLAB release can be found at the following link:
Information about supported compilers for the previous MATLAB releases can be found at the following link:
Note: this also addresses a similar issue on Ubuntu.

その他の回答 (1 件)

cui,xingxing
cui,xingxing 2024 年 2 月 15 日
If you use the CMake tool to compile, then it should link to the OpenMP library. Add the following example to CMakeLists.txt.
FIND_PACKAGE( OpenMP REQUIRED)
if(OPENMP_FOUND)
message("OPENMP FOUND")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()

製品


リリース

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by