一、安装VS
根据自己Matlab的版本查看适配什么样的VS版本,比如下图中我可以看出我能适用VS2017,所以果断卸载了VS2019……
根据自己安装的实际情况,添加下面的(修改)路径到系统变量的path:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\bin\Hostx64\x64
注意如果只安装“使用C++的桌面开发”,如果后面的编译操作不成功,请回到这里:
在安装包处选择“修改”,除了默认勾选的之外,安装包再勾选这两个:
二、下载MatConvNet
http://www.vlfeat.org/matconvnet/
请根据需要自行download并解压。
三、配置mex
打开Matlab,在下面的命令行窗口中输入:
mex -setup
选择Microsoft Visual C++ 2017 (C),不能是下图这样的MinGW编译器。
mex -setup c++
选择Microsoft Visual C++ 2017,不能是MinGW编译器。
必须保证C和C++编译器都是使用VS的。
四、编译
我的MatConvNet的解压位置是
E:\matconvnet-1.0-beta25
所以,在Matlab的命令行窗口中输入:
run E:\matconvnet-1.0-beta25\matlab\vl_compilenn
即
run (MatConvNet的解压位置)\matlab\vl_compilenn
编译成功,继续输入:
run E:\matconvnet-1.0-beta25\matlab\vl_setupnn
运行完成后没有报错/警告,视为安装成功。
五、测试
程序提供了vl_testnn来测试
vl_testnn
我在代码中也调用成功:
六、错误解决
(1)在 run vl_compilenn时候,提示错误
'cl.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
这是因为安装VS之后没有添加cl.exe文件路径到系统变量的path,具体可见“一、安装VS”。
(2)在 run vl_compilenn时候,提示错误
gdiplus.lib: No such file or directory
这是因为mex没有指定好C和C++编译到VS,具体可见“三、配置mex”。
七、参考引用
https://github.com/vlfeat/matconvnet/issues/303
https://github.com/vlfeat/matconvnet/issues/501