mex compilation failure after most recent macOS update
조회 수: 61 (최근 30일)
이전 댓글 표시
The CMake Mex compilation fails for C Mex file with the following error after the most recent macOS/xcode update:
Undefined symbols for architecture arm64:
"_mexCreateMexFunction", referenced from:
<initial-undefines>
"_mexDestroyMexFunction", referenced from:
<initial-undefines>
"_mexFunctionAdapter", referenced from:
<initial-undefines>
ld: symbol(s) not found for architecture arm64
Any permanent solution from MATLAB staff to fix this issues would be highly appreciated. Conversion to C++ API is not an option. Although the resulting C++ Mex code works, it is 25 times slower than the C version.
댓글 수: 1
William
2025년 10월 20일 20:33
I am seeing this error too with R2024a and R2025a. 100% agree fix is needed due to performance issues in C++ API.
답변 (1개)
William
2025년 10월 21일 5:07
So, after rooting around I found some posts online about compiling mex functions externally (i.e. without the mex command), and with a little more digging some related to MacOS/Apple Clang. This worked for me to compile my function that was failing with mex
clang++ -I$(MLROOT)/extern/include -shared -L$(MLROOT)/bin/maca64 -lmex -lmx -std=c++20 -O3 -fexperimental-library -march=native path/to/transformFnc.cpp -o path/to/bin/transformFnc.mexmaca64
Where e.g. MLROOT=/Applications/MATLAB_R2025a.app
And of course you can change your flags as needed (I was messing around with parallel execution hence the need for -fexperimental-library). I'm actually kind of glad this issue forced me to learn how to do this, as it seems nice to be able to control compile flags more closely.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!