编译mex文件时链接错误

时间:2013-04-05 07:13:34

标签: macos matlab linker mex

我在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 个答案:

答案 0 :(得分:1)

固定。

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