0

たとえば、mex の構成ファイルとして mexopts.sh を選択すると、

では、mexopts.sh にリストされているどのオプションがコンパイルに使用されるかを mex はどのように決定するのでしょうか?

たとえば、64 ビットの mac os x で 32 ビットの matlab を使用する場合: mexopts.sh は次のようになります。

 ,,maci
 ........

 ,,maci64
 ......

では、コンパイル時に maci または maci64 を使用しますか?

64 ビット lib の代わりに 32 ビット lib をコンパイルするには、どのようなコマンドまたは方法を実行できますか?

私のプロセスと私が得たエラーメッセージの詳細な説明: 私はバイナリ mex ファイルを生成するために、matlab R2010a (32 ビット) で mac os x 10.8 (64 ビット) を使用しています。Xcode は 4.6 バージョンです。自分のマシンにコマンド ライン ツールをインストールしました。とにかく、2011年および2012年版のmatlabからパッチをダウンロードしました。(パッチをインストールしないと、いくつかのヘッダー ファイルが見つからないという多くのリンク エラーが発生しました)。パッチをインストールした後 (mexopts.sh ファイルが変更されると思います)、mex a.cpp を実行すると、/Applications/MATLAB_R2010a.app/bin/maci64 が見つからないというエラー メッセージが表示されました。もちろん、maci64 フォルダーは見つかりません。32bit で、maci フォルダーしかありません。では、matlab が maci64 フォルダーではなく maci フォルダーを検索するようにするには、どうすればよいか知っている人はいますか? どうもありがとう!

4

3 に答える 3

2

MATLABは、MEX ファイルのクロス コンパイルをサポートしていません。したがって、OS が 64 ビットであっても、32 ビット MATLAB インストールは 32 ビット MEX ファイルを生成するはずです。

また、私がリンクした記事から

さらに、R2010b 以降、MATLAB の 32 ビット バージョンは Mac 用に作成されなくなりました。

R2010b 以降を実行している場合、MATLAB はとにかく 32 ビットではありません。

MEX スクリプトがどのスイッチ-vを使用してコンパイラを呼び出しているかを確認するには、オプションを使用します。

このfileツールを使用して、生成されたバイナリが 32 ビットか 64 ビットかを確認することもできます。

于 2013-05-07T21:09:25.820 に答える
1

説明されているように、MATLAB は、OS のビット数ではなく、それ自体と同じビット数の MEX ファイルを生成します。これは、少なくとも最近の MATLAB バージョンを使用する Windows では当てはまります。この場合、32 ビットまたは 64 ビットの MATLAB を 64 ビット Windows で実行できます。他のプラットフォームは、64 ビット バージョンのみに移行しています。

mex構成されたスイッチを取得する別の方法を次に示します。

>> cc = mex.getCompilerConfigurations
>> cc.Details

私の場合、次のようになります。

>> cc = mex.getCompilerConfigurations
cc = 
  CompilerConfiguration with properties:

             Name: 'Microsoft Visual C++ 2010'
     Manufacturer: 'Microsoft'
         Language: 'C++'
          Version: '10.0'
         Location: 'C:\Program Files\Microsoft Visual Studio 10.0'
          Details: [1x1 mex.CompilerConfigurationDetails]
       LinkerName: 'Microsoft Visual C++ 2010'
    LinkerVersion: '10.0'
>> cc.Details
ans = 
  CompilerConfigurationDetails with properties:

         CompilerExecutable: 'cl'
              CompilerFlags: [1x115 char]
          OptimizationFlags: '/O2 /Oy- /DNDEBUG'
                 DebugFlags: '/Z7'
           LinkerExecutable: 'link'
                LinkerFlags: [1x327 char]
    LinkerOptimizationFlags: ''
           LinkerDebugFlags: '/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb"'
于 2013-05-07T21:34:52.353 に答える
0

私自身の質問に答えるために、興味があるかもしれない人のために、

mexopts.sh の内容を確認し、maci 用の部分を修正 (具体的には ARCH=i386 に設定) し、コンパイルしました。エラーメッセージはなくなりました。

于 2013-05-08T17:24:40.937 に答える