Настройка mex для использования компилятора Visual Studio 2010 - PullRequest
10 голосов
/ 02 ноября 2010

У меня установлена ​​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?* оо 1008 *

Ответы [ 3 ]

7 голосов
/ 02 ноября 2010

Это зависит от того, какую версию MATLAB вы используете.R2010b поддерживает VS2010 из коробки.Если у вас R2010a, имеется исправление:

2 голосов
/ 02 ноября 2010

Существует более 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

0 голосов
/ 02 ноября 2010

Вы также можете сделать свой код C ++ доступным для Matlab без использования mex. Matlab способен загружать внешние библиотеки DLL и вызывать их функции. Таким образом, вы можете обернуть свой код в DLL и полностью обойти mex.

Как правило, я обнаружил, что это более простой способ вызова кода C или C ++ из matlab. Недостатком является то, что у вас не было бы всех возможностей для манипулирования структурами данных Matlab, которые предоставляет mex. Вы по-прежнему можете передавать данные взад и вперед, некоторые вещи более громоздки, например, выделение массива в C и передача прав собственности на него Matlab.

...