一、安装visual studio 2010
这个支持64位系统编译
二、在MATLAB 较高版本中运行mex -setup
我开始安装了visual studio 2005,在没有卸载visual studio 2005的情况下,我又安装了visual studio 2010,第一次运行mex -setup 时
Would you like mex to locate installed compilers [y]/n? y
发现在默认编译器中没有Microsoft Visual C++ 2008 SP1 所以我就按如下步骤选择了,最终成功安装。
>> mex -setup
Please choose your compiler for building external interface (MEX) files:
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:\Program Files (x86)\Microsoft Visual Studio 10.0
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
***************************************************************************
Warning: MEX-files generated using Microsoft Visual C++ 2008 require
that Microsoft Visual Studio 2008 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\11\AppData\Roaming\MathWorks\MATLAB\R2010a\mexopts.bat
From template: D:\PROGRA~1\MATLAB\R2010a\bin\win64\mexopts\msvc90opts.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:
http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9
Building with the -largeArrayDims option enables the new API.
**************************************************************************
三、make编译过程
libsvm 工具箱给的make.m文件的是
mex -O -c svm.cpp
mex -O -c svm_model_matlab.c
mex -O svmtrain.c svm.obj svm_model_matlab.obj
mex -O svmpredict.c svm.obj svm_model_matlab.obj
mex -O libsvmread.c
mex -O libsvmwrite.c
如果在64位系统中运行需要将-o 换为-largeArrayDims,即如下:
mex -largeArrayDims -c svm.cpp
mex -largeArrayDims -c svm_model_matlab.c
mex -largeArrayDims svmtrain.c svm.obj svm_model_matlab.obj
mex -largeArrayDims svmpredict.c svm.obj svm_model_matlab.obj
mex -largeArrayDims libsvmread.c
mex -largeArrayDims libsvmwrite.c
但是当我运行
>> make
找不到 D:\Program Files\MATLAB\R2010a\mywork\libsvm加强版\svmtrain.mexw64.manifest
找不到 D:\Program Files\MATLAB\R2010a\mywork\libsvm加强版\svmpredict.mexw64.manifest
找不到 D:\Program Files\MATLAB\R2010a\mywork\libsvm加强版\libsvmread.mexw64.manifest
找不到 D:\Program Files\MATLAB\R2010a\mywork\libsvm加强版\libsvmwrite.mexw64.manifest
出现上述问题
幸运的是工具箱能正常运行
[本帖最后由 faruto 于 2010-7-31 10:33 编辑]