I have installed MatConvNet from VLFeat and I am trying to compile it. But as I am trying to run vl_compilenn it shows the following error:
vl_compilenn
Warning: CL.EXE not found in PATH. Trying to guess out of mex setup.
> In vl_compilenn>check_clpath (line 580)
In vl_compilenn (line 413)
'cl.exe' is not recognized as an internal or external command,
operable program or batch file.
Error using vl_compilenn>check_clpath (line 591)
Unable to find cl.exe
Error in vl_compilenn (line 413)
check_clpath(); % check whether cl.exe in path
install visual studio community edition ( it's the free edition ) (minwg compiler will not work)
go to C:\Program Files (x86)\Microsoft Visual Studio
search for cl.exe
take the one appropriate for your computer architecture and copy it to the folder containing the matconvnet installation
run mex -setup c++ and set it to visual studio
and you're good to go
I have added the directory with cl.exe to my system PATH variable (you need to restart Matlab after that operation) and the compilation succeeded. The check_clpath() function was unable to find proper location of cl.exe, because it was trying to find executable in directory which does not exsist:
cl_path =
'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\bin\amd64'
after adding the cl.exe dir to PATH variable, in my case:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
the compilation succeeded.
Matlab accepts Professional Version of Visual Studio Compiler as I found out in one of the posts on MatLab forums.
The following is an easier solution,
addpath(fullfile('C:', 'Program Files (x86)', 'Microsoft Visual Studio', '2017', 'Professional', 'VC', 'Tools', 'MSVC', '14.16.27023', 'bin', 'Hostx64', 'x64'));
Matlab Post for reference:
https://se.mathworks.com/matlabcentral/answers/271382-mex-won-t-recognize-microsoft-visual-c-compilers
This worked for me
install community visual studio 2019 professional from
https://visualstudio.microsoft.com/es/downloads/
move to the directory where the installer placed visual studio. In my case
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
locate the cl.exe appropriate to your host and target architecture (there are four combinations x86/x64). In my case x64/x64 resulted in
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64
place the path in the environmental variable in your system
within matlab, move to CF2-master\external\matconvnet\matlab and execute vl_compilenn
Unfortunately MatConvNet does not support MinGW compiler in the current version. On Windows, you need to install Microsoft Visual Studio. Nowdays you can download the community edition for free, e.g. here.
One of the reasons why MatConvNet does not support MinGW is that on windows it uses the GDI+ library to speed up reading image files. You can try to compile it using:
vl_compilenn('EnableImreadJpeg', false)
cl.exe is a C++ compiler.
This message means that the program cannot find this file on your computer (either because it is actually not there, or because you did not indicate its location.)
If you actually have a C++ compiler and work with Windows, go to the properties of your PC -> advanced settings -> Environment Variables (Sorry if the names are not accurate, my computer is in French but should be something similar...).
Here you will have a field called PATH with most probably some paths already set. Modify it by adding the path of you C++ compiler (the folder containing cl.exe) and reboot your computer (your change is not taken into account otherwise).
I do not know how to do for other OS...
Otherwise, you need to download a C++ compiler. Visual Studio is free and has one.
I installed Matlab 2011b 64-bit. Also I installed Microsoft SDK 7.1 and Microsoft Visual C++ 2010 Express.
After these actions I used commands "mex -setup" and "mbuild -setup" for selecting "Microsoft Visual C++ 2010 Express" compiler.
When I generate C code for simulink model and compile it, I receive message
"Unable to locate LCC in C:\Program Files\MATLAB\R2011b\sys\lcc Please make sure that you have LCC installed."
LCC compiler does not used in generated code.
When I copy lcc folder from Matlab 2011b 32bit all works fine.
Why Matlab try to find LCC instead of Visual C++ 2010 Express? I don't understand it.
Maybe someone has any ideas. Thanks.
I am trying to compile and run a 64bit application in MATLAB using the Visual Studio 2010 Professional compiler. I know both the program and the compiler work properly because when I start matlab from the Visual Studio x64 command prompt I am able to run the program without an issue.
I have run mex -setup and selected the 2010 compiler as follows:
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:
[1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
[2] Microsoft Visual C++ 2008 Express in C:\Program Files (x86)\Microsoft Visual Studio 9.0
[0] None
Compiler: 1
Please verify your choices:
Compiler: Microsoft Visual C++ 2010 Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
************************************************************************* Warning: MEX-files generated using Microsoft Visual C++ 2010 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\OEM\AppData\Roaming\MathWorks\MATLAB\R2010a\mexopts.bat From template: C:\PROGRA~1\MATLAB\R2010a\bin\win64\mexopts\msvc100opts.bat
Done . . .
Unfortunately this doesn't seem to allow me to run the 64bit application. I get an error regarding cl preprocessor commands, essential pointing to the fact I'm not using a 64 bit compiler. Does anyone know how I can configure this so that I will not need to run Matlab from the Visual Studio 2010 command line? I would appreciate any help on this.
Thanks so much in advance!
Don
I'd like to know which specific file is my Microsoft compiler. I need it to compile some Matlab code. By running mex -setup mex is able to locate the compiler in the following directory : d:\Program Files (x86)\Microsoft Visual Studio 10.0 However when I browse there, there is no file that would possibly be the actual compiler.
I'd like to build my application, but it won't work, looks like Matlab indeed found the compiler, but I get an error (code = 53) An error occurred while shelling out to mbuild
So my guess then was that I had to go in the Deployement tool Settings and add some options like the compiler directory (even if I already set it with mex), but I can't find it in d:\Program Files (x86)\Microsoft Visual Studio 10.0 I don't even know what's the compiler's name.
I really need help on this one. Thanks!
For mex -setup to work correctly you don't need to know what the actual compiler is called. When I run mex -setup I get a list like this:
Select a compiler:
[1] Intel C++ 12.0 (with Microsoft Visual C++ 2010 linker) in C:\Program Files (x86)\Intel\ComposerXE-2011
[2] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2010 linker) in C:\Program Files (x86)\Intel\ComposerXE-2011
[3] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
[0] None
and if I select [3] the informative output includes the lines
Trying to update options file: D:\Users\my.name\AppData\Roaming\MathWorks\MATLAB\R2012a\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2012a\bin\win64\mexopts\msvc100opts.bat
If you inspect either of those files you will find the name of the compiler (it's called cl.exe and there are a few different versions in directories below the one that Matlab suggests it is looking in) assigned to be the value of a script variable called COMPILER. You'll also find all the settings that mex uses when it compiles code into a mex-file. You may be able to diagnose the rest of your problem(s) from this information.
If you can't solve your problem(s) with this 'help', edit it and explain precisely the error messages and
I've been crazy on these things all day...
I installed the Matlab2010a on remote desktop (64bits windows server 2008)
then I need to use the "mex" command to recompile the code (which is already compiled at my laptop(64-bits), but it doesn't work when I copy the .mexw64 to the remote one)
But on the remote desktop, there is no Visual Studio/VC6.0. And you know it's tooooo hard and not workable to install something like that on the remote desktop...
So, are there any other solutions for me to compile the .cpp on matlab?
Thank you so much, because I've been drived crazy...Jesus...
Try the following to see what compiler is available
mex
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2012a\sys\lcc
[2] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
The output shows that my MATLAB may use one of these two compilers to create mex files.
If I want to set up my another compiler, I have to use the following command
mex -setup