我正在尝试在 MATLAB 上运行编译器,但事情并没有按预期进行。如何正确安装 MATLAB 以及如何检查到底出了什么问题。我有 MATLAB r2013a 版本。
我做了如下:
我已经从 here 下载了 SDK 7.1 文件
- Tools 的目标文件夹:
C:\Program Files\Microsoft SDKs\Windows\v7.1
- 示例的目标文件夹:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples
- Tools 的目标文件夹:
我已将我的编译器目录添加到路径环境
- 控制面板 -> 系统 -> “高级” -> “环境变量”。
- 名为“MSSdk”的新系统变量。
- 此变量的值:C:\Program Files\Microsoft SDKs\Windows\v7.1
- 关闭并重新启动 MATLAB
接下来,我尝试使用以下步骤并使用 mex -setup
命令配置 MATLAB:
通过“would you like mex to locate installed compilers”选择
n
后,我得到了一个编译器列表(见上面的评论)。我选择了17
:[1] Intel C++ 13.0 (with Microsoft Software Development Kit (SDK) linker) [2] Intel C++ 13.0 (with Microsoft Visual C++ 2010 linker) [3] Intel C++ 13.0 (with Microsoft Visual C++ 2012 linker) [4] Intel C++ 12.0 (with Microsoft Software Development Kit (SDK) linker) [5] Intel C++ 12.0 (with Microsoft Visual C++ 2008 SP1 linker) [6] Intel C++ 12.0 (with Microsoft Visual C++ 2010 linker) [7] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker) [8] Intel Visual Fortran 13 (with Microsoft Software Development Kit (SDK) linker) [9] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2010 linker) [10] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2012 linker) [11] Intel Visual Fortran 12 (with Microsoft Software Development Kit (SDK) linker) [12] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 SP1 linker) [13] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 Shell linker) [14] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2010 linker) [15] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker) [16] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker) [17] Microsoft Software Development Kit (SDK) 7.1 [18] Microsoft Visual C++ 2005 SP1 [19] Microsoft Visual C++ 2008 SP1 [20] Microsoft Visual C++ 2010 [21] Microsoft Visual C++ 2012
以下警告:
The default location for Microsoft Software Development Kit (SDK) compiler is: "C:\Program Files (x86)\Microsoft Visual Studio 10.0" but either that directory does not exist or the configuration is invalid.
问题:
Use C:\Program Files (x86)\Microsoft Visual Studio 10.0 anyway [y]/n?
我选择了
n
并将C:\Program Files\Microsoft SDKs\Windows\v7.1
作为我的新目录
这里是它停止的地方:
Error: The Microsoft Windows Software Development Kit (SDK) installation is
incomplete. Please be sure that the .NET Framework is installed
correctly before attempting to reinstall the SDK.
编辑:
我的第二次尝试如下:
- 我删除了所有 Visual Basic 文件(通过删除程序中列为 Visual Basic 的所有项目)
- 我再次重新安装了 SDK 文件,但没有检查 visual c++ 编译器和 Microsoft visual c++
- 申请patch从 Microsoft 到 SDK 7.1 安装(如果尚未完成)
- 重新安装了 Visual C++ 2010 Redistributable 软件包:x86 和 x64
- 在 MATLAB 中,我再次使用了
mex -setup
发生了以下情况:
我在问题后面选择了
y
:Would you like mex to locate installed compilers [y]/n? [1] Microsoft Software Development Kit (SDK) 7.1 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
我选择了
1
- 然后在询问这是否正确后,根据选择
y
或n
我得到以下 2 个输出
我选择了 n:
mex: No compiler selected. No action taken.
**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
httpx://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html
Building with the -largeArrayDims option enables the new API.
**************************************************************************
Error using mex (line 206)
Unable to complete successfully.
我选择了 y:
***************************************************************************
Warning: MEX-files generated using Microsoft Windows Software Development
Kit (SDK) require that Microsoft Visual Studio 2010 run-time
libraries be available on the computer they are run on.
If you plan to redistribute your MEX-files to other MATLAB
users, be sure that they have the run-time libraries.
***************************************************************************
Trying to update options file: C:\Users\Gebruiker\AppData\Roaming\MathWorks\MATLAB\R2013a\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2013a\bin\win64\mexopts\mssdk71opts.bat
Done . . .
**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
httpx://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html
Building with the -largeArrayDims option enables the new API.
**************************************************************************
Error using mex (line 206)
Unable to complete successfully.
编辑:
我发现我面临的问题似乎与 Perl 的问题无关。短暂出现以下注释:
"Perl Command Line Interpreter has stopped working"
这post有类似的问题。我做了如下。我下载了Strawberry Perl并做了几次替换。
- 替换所有exe文件
替换 perl .exe 文件
两种情况下都会出现以下情况
Can't locate shellwords.pl in @INC (@INC contains: C:/strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/strawberry/perl/lib . C:\PROGRA~1\MATLAB\R2013a\bin\) at C:\Program Files\MATLAB\R2013a\bin\mex.pl line 159. Error using mex (line 206) Unable to complete successfully.
用 Strawberry Perl 中的 bin 文件替换 bin 文件
'"C:\Program Files\MATLAB\R2013a\sys\perl\win32\bin\perl.exe"' is not recognized as an internal or external command, operable program or batch file. Error using mex (line 206) Unable to complete successfully.
但这似乎不起作用。所以这似乎是两件事:
- 不是这样的(只有一个人声称他这样做过)
- 我正在用 Strawberry Perl 中的文件替换 MATLAB 中的错误文件。
编辑:按照建议,我将 matlab 中的 perl 恢复到它的原始版本。
我已经下载了 Visual Studio Express 2012 并尝试让它工作。问题还是一样。
最佳答案
所以,我首先检查的是 matlab 支持的编译器页面:
http://www.mathworks.com/support/compilers/R2013a/index.html
我原以为不支持 SDK 7.1,但显然支持,甚至排在首位。但是,您的错误之一是提示 .NET,并且在该 MATLAB 页面上,有一个关于 SDK 7.1 需要 .NET Framework 4.0 的警告(在表格中,在 SDK 7.1 单元格的底部。)
每当我在 Windows 中完成此操作时,我总是只使用 Visual Studio 编译器。我建议先尝试一下,因为我不记得这个 mex-setup 过程花了很长时间(在成功/失败之前)。
关于matlab编译器安装问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405307/