Ошибка Matconvnet cl.exe не найдена

Я установил MatConvNet из VLFeat и пытаюсь его скомпилировать. Но когда я пытаюсь запустить vl_compilenn, он показывает следующую ошибку:

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

person user7029552    schedule 24.10.2016    source источник


Ответы (6)


установите Visual Studio Community Edition (это бесплатная версия) (компилятор minwg не будет работать) перейдите в C:\Program Files (x86)\Microsoft Visual Studio, найдите cl.exe, возьмите тот, который подходит для вашей компьютерной архитектуры, и скопируйте его в папка, содержащая установку matconvnet, запустите mex -setup C++ и установите для нее Visual Studio, и все готово.

person Mohammed Dabbah    schedule 03.11.2017

К сожалению, MatConvNet не поддерживает компилятор MinGW в текущей версии. В Windows вам необходимо установить Microsoft Visual Studio. В настоящее время вы можете бесплатно загрузить версию сообщества, например. здесь.

Одна из причин, по которой MatConvNet не поддерживает MinGW, заключается в том, что в Windows он использует библиотеку GDI+ для ускорения чтения файлов изображений. Вы можете попробовать скомпилировать его, используя: vl_compilenn('EnableImreadJpeg', false)

person Karel Lenc    schedule 18.11.2016
comment
Привет, я установил флаг EnableImreadJpeg в false, как вы сказали, но все еще не смог скомпилировать :( - person Dang Manh Truong; 21.02.2017

Я добавил каталог с cl.exe в свою системную переменную PATH (вам нужно перезапустить Matlab после этой операции), и компиляция прошла успешно. Функция check_clpath() не смогла найти правильное расположение cl.exe, так как пыталась найти исполняемый файл в несуществующем каталоге:

cl_path =

'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\bin\amd64'

после добавления каталога cl.exe в переменную PATH, в моем случае:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

компиляция удалась.

person Sylwester Fabian    schedule 10.04.2019

Matlab принимает профессиональную версию компилятора Visual Studio, как я узнал в одном из сообщений на форумах MatLab.

Ниже приведено более простое решение,

addpath(fullfile('C:', 'Program Files (x86)', 'Microsoft Visual Studio', '2017', 'Professional', 'VC', 'Tools', 'MSVC', '14.16.27023', 'bin', 'Hostx64', 'x64'));

Сообщение Matlab для справки: https://se.mathworks.com/matlabcentral/answers/271382-mex-won-t-recognize-microsoft-visual-c-compilers

person jagms    schedule 12.02.2020
comment
Добро пожаловать в StackOverflow. Пожалуйста, добавьте ссылку на сообщение форума MatLab, которое поддерживает ваш ответ. - person Ketan Yekale; 12.02.2020
comment
Конечно @KetanYekale - person jagms; 12.02.2020


cl.exe — это компилятор C++.

Это сообщение означает, что программа не может найти этот файл на вашем компьютере (либо потому, что его на самом деле нет, либо потому, что вы не указали его местонахождение).

Если у вас действительно есть компилятор C++ и вы работаете с Windows, перейдите в свойства вашего ПК -> дополнительные настройки -> переменные среды (извините, если имена не точны, мой компьютер на французском языке, но должно быть что-то похожее...) . Здесь у вас будет поле PATH, в котором, скорее всего, уже установлены некоторые пути. Измените его, добавив путь к вашему компилятору C++ (папка, содержащая cl.exe) и перезагрузите компьютер (в противном случае ваше изменение не будет учтено).

Я не знаю, как сделать для других ОС...

В противном случае вам необходимо загрузить компилятор C++. Visual Studio бесплатна и имеет один.

person Eskapp    schedule 24.10.2016
comment
Я уже пробовал это. У меня есть TDM Gcc-4.9 MinGw64bit, и я добавил путь к переменным среды. Но ошибка все еще появляется. Я изменил строку 415-418 на следующий код - person user7029552; 25.10.2016
comment
ase {'win64'} flags.nvccpass{end+1} = '-Xcompiler/MD'; % cl_path = части файла (check_clpath()); % проверить наличие cl.exe в пути flags.nvccpass{end+1} = '-ccbinC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64' ; конец - person user7029552; 25.10.2016
comment
На самом деле вам не нужно полностью перезагружаться, вы можете просто перезапустить Matlab - person Alex Lamson; 03.03.2018