2010-11-02 20 views
10

J'ai installé Visual Studio 2010. Cependant, MATLAB ne trouve pas le compilateur.Configuration de mex pour utiliser le compilateur Visual Studio 2010

>> 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: 

Si je réponds n à la question, je reçois le texte suivant

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] 

Quelle est la meilleure façon de compiler mon C++ code pour le rendre disponible en Matlab? Installez Visual C++ 2008? oO

Répondre

2

Il y a plus de 1 façons de travailler autour de votre problème, et un seul implique l'argent :)

  1. Acheter/Mettre à niveau vers une nouvelle version Matlab (R2010b reconnaît et travaille avec VS2010).
  2. Vous n'avez pas besoin d'installer le package complet VS2008, l'ancien Windows SDK v7.0 est suffisant. Une fois installé, matlab devrait reconnaître quand vous faites un mbuild -setup.
  3. Comme vous l'avez vous-même suggéré, installez VS2008.

Pour référence future: http://www.mathworks.com/support/compilers/R2010b/index.html

+0

va télécharger la version R2010b de mon université ... – Etan

0

Vous pouvez également faire votre code C++ disponible pour Matlab sans utiliser MEX. Matlab est capable de charger des DLL externes et d'appeler leurs fonctions. Donc, vous pouvez envelopper votre code dans une DLL, et contourner mex entièrement.

Généralement, j'ai trouvé que c'était un moyen plus simple d'appeler du code C ou C++ depuis matlab. L'inconvénient est que vous n'avez pas toutes les facilités pour manipuler les structures de données matlab que mex fournit. Vous pouvez toujours transmettre des données, certaines choses sont plus lourdes, comme l'allocation d'un tableau en C et l'attribution de la propriété à matlab.

+0

je suggère la procédure [Compilation des fichiers Mex Visual Studio] (http://www.orangeowlsolutions.com/news) pour compiler mex-files directement dans Visual Studio. La procédure a été testée pour Visual Studio 2010, Matlab 2010a et une machine cible Intel 64 bits. À partir de cette page Web, vous pouvez trouver un projet «modèle» Visual Studio que vous pouvez télécharger et utiliser comme référence pour le vôtre. Pourquoi dites-vous qu'il y a des limites? Je ne trouve pas immédiatement une raison pour laquelle vous ne pourriez pas compiler des fichiers mex sous Visual Studio avec toutes les fonctionnalités mex. – JackOLantern