使用Visual Studio 2010编译器设置mex

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

3个回答

7

2

有多种解决问题的方法,只有其中一种需要花钱 :)

  1. 购买/升级到新版Matlab(R2010b可以识别和使用VS2010)。
  2. 您不必安装完整的VS2008软件包,旧版Windows SDK v7.0就足够了。 安装后,在执行mbuild -setup时,Matlab应该会识别它。
  3. 如你自己所建议的,安装VS2008。

供以后参考:http://www.mathworks.com/support/compilers/R2010b/index.html


0

你也可以在不使用mex的情况下将你的C++代码提供给Matlab。 Matlab能够加载外部DLL并调用它们的函数。因此,你可以将你的代码封装到DLL中,并完全绕过mex。

一般来说,我发现这是从matlab调用C或C++代码的更简单的方式。缺点是你可能没有mx提供的操纵matlab数据结构的所有设施。你仍然可以传递数据,但有些事情会更麻烦,例如在C中分配一个数组并将其所有权交给matlab。


我建议按照使用Visual Studio编译mex文件中的步骤直接在Visual Studio中编译mex文件。该过程已经测试适用于Visual Studio 2010、Matlab 2010a以及64位Intel目标机器。从那个网页中,你可以找到一个“模板”Visual Studio项目,你可以下载并用作自己的参考。你为什么说存在限制?我没有立即找到任何理由,说明你不能在Visual Studio下编译具有所有mex功能的mex文件。 - Vitality

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接