1

mex (MacOSX Lion 上の MATLAB 2012b) を使用して C ファイルをコンパイルしようとしています。私のプロジェクトは 3 つのファイルで構成されています。

  1. 主な機能が定義されているヘッダー ファイル、smdvquad.h
  2. smdvquad.h の C 実装、つまりsmdvquad.cは #include smdvquad.h と
  3. 「mexFunction」を含む AC ファイル、つまりsmdvquad.hを #include する mxsmdvquad.c

プロジェクト全体は 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-引数を使用して作業ディレクトリを指定しようとしました。

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 に答える