我正在尝试使用mex编译一个C文件(MacOSX Lion上的MATLAB 2012b)。我的项目包含三个文件:
整个项目在Netbeans上编译得非常好,但当我尝试在MATLAB上使用mex编译它时,即使用命令:
mex -largeArrayDims mxsmdvquad.c
抛出以下错误:
>> mex -largeArrayDims mxsmdvquad.c
Undefined symbols for architecture x86_64:
"_smdv_quad", referenced from:
_mexFunction in mxsmdvquad.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
mex: link of ' "mxsmdvquad.mexmaci64"' failed.
Error using mex (line 206)
Unable to complete successfully.
我也尝试使用-I mex-argument指定工作目录,即
mex -largeArrayDims -I/path/to/my/project/ mxsmdvquad.c
但徒劳无功!
答案 0 :(得分:2)
我希望以下其中一项能够奏效:
也许您还需要编译smdvquad.c
?
mex -largeArrayDims mxsmdvquad.c smdvquad.c
或者如果你已经编译了smdvquad,你可能需要链接它:
mex -largeArrayDims mxsmdvquad.c smdvquad.o
或者如果它位于不同的目录中,则需要使用-L
将目录添加到链接器:
mex -largeArrayDims -L/path/to/project mxsmdvquad.c smdvquad.o