10

Visual Studio 2010 をインストールしました。ただし、MATLAB はコンパイラを検出しません。

>> mex -setup
Please choose your compiler for building external interface (MEX) files: 

Would you like mex to locate installed compilers [y]/n? y

Select a compiler: 

[0] None 

Compiler:

質問に答えるnと、次のようになります

Would you like mex to locate installed compilers [y]/n? n

Select a compiler: 
[1] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker) 
[2] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker) 
[3] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker) 
[4] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker) 
[5] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1 linker) 
[6] Microsoft Visual C++ 2005 SP1 
[7] Microsoft Visual C++ 2008 Express 
[8] Microsoft Visual C++ 2008 SP1 

[0] None 

Compiler: 8

The default location for Microsoft Visual C++ 2008 SP1 compilers is C:\Program Files (x86)\Microsoft Visual Studio 9.0, 
but that directory does not exist on this machine.  

Use C:\Program Files (x86)\Microsoft Visual Studio 9.0 anyway [y]/n? n
Please enter the location of your compiler: [C:\Program Files (x86)\Microsoft Visual Studio 9.0] 

C++ コードをコンパイルして MATLAB で使用できるようにする最も簡単な方法は何ですか? Visual C++ 2008 をインストールしますか? oO

4

3 に答える 3

7

使用しているMATLABのバージョンによって異なります。R2010bは、そのままVS2010をサポートします。R2010aをお持ちの場合は、次のパッチを利用できます。

于 2010-11-02T18:47:13.480 に答える
2

あなたの問題を回避する方法は複数ありますが、お金が関係するのは1つだけです:)

  1. 新しい Matlab バージョンを購入/アップグレードします (R2010b は VS2010 を認識して動作します)。
  2. 完全な VS2008 パッケージをインストールする必要はありません。古いWindows SDK v7.0で十分です。インストールが完了すると、matlab は、mbuild -setup.
  3. あなた自身が提案したように、VS2008をインストールしてください。

今後の参考のために: http://www.mathworks.com/support/compilers/R2010b/index.html

于 2010-11-02T13:34:07.733 に答える
0

mex を使用せずに、C++ コードを Matlab で使用できるようにすることもできます。Matlab は、外部 DLL を読み込んでその関数を呼び出すことができます。したがって、コードを DLL にラップして、mex を完全にバイパスできます。

一般に、これは matlab から C または C++ コードを呼び出すより簡単な方法であることがわかりました。欠点は、mex が提供する matlab データ構造を操作するためのすべての機能を使用できないことです。データをやり取りすることはできますが、C で配列を割り当ててその所有権を matlab に渡すなど、より面倒なことがあります。

于 2010-11-02T17:36:13.933 に答える