如何为matlab设置C/C++编译器
How set C/C++ compiler for matlab?
我已经阅读了关于这个问题的几个主题。。。但我还是搞不清楚。我有matlab 2013和"MS Visual C++2012 Redistributable"都安装在Windows 8中的x86/x64。当我在matlab中运行"mex-setup"时,会出现以下消息:
请选择用于构建MEX文件的编译器:
您希望mex查找已安装的编译器[y]/n吗?y
在此计算机上找不到支持的SDK或编译器。有关支持的编译器的列表,请参阅
http://www.mathworks.com/support/compilers/R2013a/win64.html
但建议的文件是用于安装Windows7的.NET4,我有Windows8。然而,尽管我安装了这个框架,mex-setup命令仍然不起作用。
这似乎仍然是一个没有直接解决方案的问题。我花了大量的搜索、阅读和试错才能让mex识别出一个编译器
简而言之,matlab 2013不支持windows 8 SDK,但windows 7 SDK不容易安装在windows 8上。
对我有用的东西:
win7 SDK没有安装在windows 8上,因为默认情况下,windows 8上已经安装了Visual C++2010 Redistributable的最新版本。您必须手动(从控制面板/programs/uninstal…)卸载所有版本的VC++2010可再发行(x86和x64)。
有关如何做到这一点的详细信息,请参阅Microsoft的这篇文章。
之后,我可以安装win7的SDK,并让mex.识别编译器
注:
我运行win8 32位,所以对我有效的可能不是每个人都完美。在我搜索这个主题的过程中,我还注意到许多人经常会遇到另外两个挫折:
-
在安装win 7 SDK的过程中,没有安装.NET 4。=>这是因为.net4.5已经在windows8中提供了。再次卸载.net4.5,然后重新安装win7 SDK。(如果需要,您甚至可以在完成所有操作后重新安装.net4.5)。
-
一旦所有东西都安装好了,mex很高兴地找到了编译器,在编译过程中就会出现关于缺少
ammintrin.h
的错误。您可能需要安装MS Visual Studio C++2010 express,然后将其升级到SP1。在这种情况下,请遵循这篇Matlab中心文章中非常详细的说明。
链接的最后一篇文章似乎提供了一个完整的解决方案,我在回答中没有首先提到它,因为在某些情况下(例如我的情况),只需要描述部分设置,所以卸载/重新安装一堆东西是没有意义的。但要做好准备,你可能不得不经历这一切。。。
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 我需要知道编译器如何在cpp中使用析构函数
- 编译器如何区分std::vector的构造函数
- CLANG 编译器 说:变量"PTR"可能未初始化
- 告诉c++编译器该参数没有别名
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么所有C++编译器都会崩溃或挂起此代码
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 为什么C++编译器没有检测到正确声明的类?