2013-04-05 113 views
0

我在OS X 10.8的MATLAB R2011a下運行mex。 編譯過程幾乎可以。 但我進入一些鏈接錯誤。 我在MATLAB命令窗口中使用的命令行是:編譯mex文件時出現鏈接錯誤

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。 我刪除了該鏈接,一切順利。