1

我正在尝试使用 mex(MacOSX Lion 上的 MATLAB 2012b)编译 C 文件。我的项目包含三个文件:

  1. 定义主要功能的头文件,smdvquad.h
  2. smdvquad.h 的 C 实现,即smdvquad.c其中#includes smdvquad.h 和
  3. 包含“mexFunction”的 AC 文件,即mxsmdvquad.c其中#includes smdvquad.h

整个项目在 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

但徒劳!

4

1 回答 1

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
于 2013-01-29T22:46:57.303 回答