首页 > 解决方案 > 仅将 C++/mex 转换为 C++

问题描述

2 年前,我开始在 MATLAB 中编写数据处理代码,感谢 armadillo,我能够将其转换为 C++/mex 文件。它终于全部转换为 C++/mex,但不再需要仅是 C++ 的 mex。所以我开始编写 C++ 主函数,并包含了我在 mex 版本中使用的函数的头文件,当我尝试编译时,我得到了

/usr/bin/ld: /tmp/ccYOMZVI.o: undefined reference to symbol 'mxGetN_800'
/usr/bin/ld: /usr/local/MATLAB/R2019b/bin/glnxa64//libmx.so: error adding symbols: DSO missing from command line

使用 Matlab/Mex 编译时,我使用的命令是:

mex -v COMPFLAGS='$COMPFLAGS /std:c++11' COPTIMFLAGS="-O3 -fwrapv -DNDEBUG" CFLAGS="$CFLAGS -fopenmp -march=native" -I/usr/include rcp_adp.cpp -I/usr/include ini.c -I/usr/include cpp/INIReader.cpp -L/lib64 -lgomp -larmadillo -lmwlapack -lmwblas -lfftw3_omp -lfftw3 -lm

我的 C++ 测试函数编译:

g++ test.cpp -O3 -fopenmp -fwrapv -DNDEBUG -L/usr/local/MATLAB/R2019b/bin/glnxa64/ -lgomp -larmadillo -lmwlapack -lmwblas -lfftw3_omp -lfftw3 -lm

自从我从终端编译 C/C++ 而不是从 MATLAB for mex 编译 C/C++ 可能已经有大约 5 年了,所以我可能会遗漏一些非常简单的东西。任何帮助将不胜感激。

标签: c++matlabmex

解决方案


推荐阅读