【问题标题】:Link mat.h in a C++ file在 C++ 文件中链接 mat.h
【发布时间】:2017-06-15 09:55:35
【问题描述】:

我必须使用 mat.h 在我的 C++ 代码中打开一个 .mat 文件。 我的代码是:

#include "mat.h"
using namespace std;
int main() {
MATFile *pmat;
pmat = matOpen("ns3Da.mat","r");
return 0;
}

我用来编译的命令是:

g++ program.cpp -I/usr/local/MATLAB/R2012a/extern/include -L/usr/local/MATLAB/R2012a/bin/* -L/usr/local/MATLAB/R2012a/extern/lib - o 程序

我得到的错误是:

/tmp/ccSWqTnb.o: In function 'main': programma_c.cpp:(.text+0x13): undefined reference to 'matOpen' collect2: error: ld returned 1 exit status

我使用 Linux Ubuntu 16.04 LTS 和 Matlab 2012a 版本。

我该如何解决这个错误?

【问题讨论】:

  • 您没有链接所需的库。您只需指定库搜索路径。
  • ^ --- 即在构建命令中添加-lmat
  • 好的,谁认为“mat.h”是一个好名字?看起来好像有人拼错了“math.h”

标签: c++ linux matlab compiler-errors mat


【解决方案1】:

编译中的-L 标志指定搜索库的路径。 -l 标志应该用于指定没有lib 的库的名称,例如,在您的情况下为-lmat。所以你的编译命令应该是这样的

g++ program.cpp -I/usr/local/MATLAB/R2012a/extern/include -L/usr/local/MATLAB/R2012a/bin/glnxa64 -L/usr/local/MATLAB/R2012a/extern/lib -lmat -o program

【讨论】:

  • /usr/bin/ld: 找不到 -lmat collect2: 错误: ld 返回 1 个退出状态
  • libmat 在您的系统中的位置
  • 在 /usr/local/MATLAB/R2012a/bin/glnxa64 中有 libmat.so
  • 我已经相应更新了答案,请试一试
  • /usr/bin/ld: 警告:libmwfl.so,/usr/local/MATLAB/R2012a/bin/glnxa64/libmat.so 需要,未找到(尝试使用 -rpath 或 -rpath -link)/usr/bin/ld:警告:libmwi18n.so,/usr/local/MATLAB/R2012a/bin/glnxa64/libmat.so 需要,未找到(尝试使用 -rpath 或 -rpath-link).. .... collect2:错误:ld 返回 1 个退出状态
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
相关资源
最近更新 更多