C++调用Matlab实现GUI报错libMatlabEngine.dylib未加载求解
问题根因
- macOS系统的动态库加载环境变量不是
LD_LIBRARY_PATH,而是DYLD_LIBRARY_PATH,你当前makefile用错了环境变量 - makefile的run指令里MATLAB库路径拼写错误,
${MATLAB_ROOT}和后面的extern之间缺少斜杠,导致路径无效 - 链接阶段没有给二进制文件嵌入
@rpath搜索路径,运行时dyld无法定位Matlab引擎库的位置
修复方案
1. 临时修复(仅通过run指令启动生效)
直接修改makefile中的run规则,替换环境变量名、补全路径斜杠即可:
run: viergewinnt DYLD_LIBRARY_PATH=${MATLAB_ROOT}/extern/bin/maci64:${DYLD_LIBRARY_PATH} \ ./viergewinnt
2. 永久修复(不需要配置环境变量,直接运行二进制也能正常加载库)
修改LDFLAGS参数,在链接阶段给二进制嵌入rpath搜索路径:
LDFLAGS=-L ${MATLAB_ROOT}/extern/bin/maci64/ -pthread -Wl,-rpath,${MATLAB_ROOT}/extern/bin/maci64
修改完成后执行make clean清空旧编译产物,再重新编译即可。
内容的提问来源于stack exchange,提问作者bla1234
相关产品推荐
相关产品推荐

