编译 mex 文件时出现链接错误

Posted

技术标签:

【中文标题】编译 mex 文件时出现链接错误【英文标题】:Link error when compile mex files 【发布时间】:2013-04-05 07:13:34 【问题描述】:

我在 OS X 10.8 的 MATLAB R2011a 下运行 mex。 编译过程几乎可以。 但是我遇到了一些链接错误。 我在MATLAB命令行窗口中使用的命令行是:

mex -I/usr/include/ -L/usr/lib/ -O -DDEBUG -DFASTPLOG CalcEntropyScalesOpt.c  Hists.c

在 MS Windows 中运行良好的原始命令行是

mex -O -DDEBUG -DFASTPLOG CalcEntropyScalesOpt.c  Hists.c

我添加了那些 -I 和 -L 选项来修复一些错误。但是链接错误依然存在:

Undefined symbols for architecture x86_64:
"_mxCreateDoubleMatrix_700", referenced from:
  _do_CalcSalScale1DAA in CalcEntropyScalesOpt.o
  _do_CalcSalScale3D in CalcEntropyScalesOpt.o
  _do_CalcSalScale2D in CalcEntropyScalesOpt.o
  _do_CalcSalScale1DParzen in CalcEntropyScalesOpt.o
  _do_CalcSalScale1D in CalcEntropyScalesOpt.o
"_mxCreateNumericArray_700", referenced from:
  _AACirclePix in CalcEntropyScalesOpt.o
  _CirclePix2 in CalcEntropyScalesOpt.o
... many more like this ...
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

mex: link of ' "CalcEntropyScalesOpt.mexmaci64"' failed.

我想我需要更多的 -l 或 -L 选项,但不知道在那里写什么。

谢谢。

问候, 理查德

【问题讨论】:

【参考方案1】:

固定。

所需的库是 mx (libmx.dylib)。 它在 MATLABROOT/bin/maci64 下,没问题。 但是 /usr/lib 中有一个错误的符号链接。 链接器实际上链接了该文件,该文件指向某个 libSystem.dylib。 我删除了那个链接,一切顺利。

【讨论】:

以上是关于编译 mex 文件时出现链接错误的主要内容,如果未能解决你的问题,请参考以下文章

Octave:可以编译 mex,但出现错误:“无法安装 .mex 文件功能”

编译共享库时出现链接错误

从命令提示符编译 CUDA 时出现链接错误

在 vl-feat 中运行 vl_compile 时出现 Mex 错误

尝试在 XE 中访问 RAD Studio 10.2 编译库时出现链接错误

尝试将ImageMagick用作Visual Studio编译器的静态库时出现链接器错误