1

「loadlibrary」関数を使用して、単純なライブラリを matlab に追加しようとしています。まず、mex -setup を使用して gcc コンパイラを matlab にリンクし、次のようにします。

mex で使用できるオプション ファイルは次のとおりです。

1: /Applications/MATLAB_R2012a.app/bin/mexopts.sh : gcc MEX ファイルをビルドするためのテンプレート オプション ファイル

0: 変更せずに終了

だから私は1を選んで続けました。その後、次のメッセージを受け取りました。


警告: MATLAB C および Fortran API は、2^32-1 を超える要素を持つ MATLAB 変数をサポートするように変更されました。近い将来、新しい API を利用するにはコードを更新する必要があります。詳細については、http: //www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.htmlを参照してください。 -largeArrayDims オプションを指定してビルドすると、新しい API が有効になります。


この後、次のように入力します: loadlibrary('Samplelib.dylib','Samplelib.h')

loadlibrary の使用エラー (419 行目) 入力ファイルの前処理に失敗しました。プリプロセッサからの出力は次のとおりです:/bin/bash: gcc-4.2: コマンドが見つかりません

なぜこれが起こっているのですか?

4

2 に答える 2

0

Macでmatlabを使用していますか?先に進む前に、まず gcc をインストールする必要があります。Xcode を試してみてください -上記の mexopts.sh にハードコードされているため、gcc-4.2が必要です。インストール方法は MacOS のバージョンによって異なりますが、Google xcode を使用すると、多くのリンクが見つかります。

于 2012-09-21T18:47:58.540 に答える
0

最初の「警告」は、C API が膨大な数の要素をサポートするため、これまで以上に優れていることを伝えるためのものですが、Matlab の以降のバージョンでは新しいオプションを使用して有効にする必要があります。要するに、あなたは気にしません。gcc-4.2 に関する次のエラーは、gcc 4.2 コンパイラがパスにないことを意味します。あなたがする場合:

    [s1,r1] = system('which gcc')
    disp( r1 )
    disp( s1 )
    [s2,r2] = system('which gcc-4.2')
    disp( r2 )
    disp( s2 )

おそらく、一方または両方がエラーで返されます。PATHgcc コンパイラが環境変数にあることを確認してください。

繰り返しますが、コンパイラもインストールする必要があります。:-)

于 2012-09-21T18:48:04.117 に答える