Распознавание компилятора VC ++ в MATLAB - PullRequest
1 голос
/ 16 октября 2019

Для установки MatConvNet необходимо использовать компилятор C ++. Поскольку MingW-w64 C ++ не работает, следует использовать компилятор Visual C ++. Однако с этим я столкнулся с некоторыми проблемами. Хотя они оба установлены, я не смог их использовать. При использовании компилятора Mingw процесс установки будет неудачным, и VC ++ не может быть распознан. Я установил Visual Studio 2017, но когда выдается следующая команда, кажется, что она не распознаваема.

>> mex.getCompilerConfigurations('C++','Selected')

Вывод :

ans = 

         CompilerConfiguration with properties:

         Name: 'MinGW64 Compiler (C++)'
 Manufacturer: 'GNU'
     Language: 'C++'
      Version: '4.x'
     Location: '$MINGWROOT'
    ShortName: 'mingw64-g++'
     Priority: 'E'
      Details: [1×1 mex.CompilerConfigurationDetails]
   LinkerName: '$MINGWROOT\bin\g++'
LinkerVersion: ''
       MexOpt: some path

Итак,Вопрос в том, как заставить MATLAB распознавать VC ++ в качестве основного компилятора?

Ps Оба компилятора находятся в каталоге mexopts MATLAB.

enter image description here

Ответы [ 2 ]

3 голосов
/ 16 октября 2019

Документированный способ выбора компилятора C ++ заключается в использовании mex -setup c++. Однако, если это не работает по какой-то причине (как, кажется, имеет место для OP), то можно настроить компилятор вручную:

В выводе mex.getCompilerConfigurations('C++','Selected') есть значение MexOpt,Это указывает на файл, который содержит информацию о выбранном компиляторе, который будет использовать mex.

Вы можете взять любой из файлов XML в каталоге mexopts (который можно найти здесь: $MATLABROOT/bin/<arch>/mexopts), скопируйте и переименуйте его, чтобы оно соответствовало значению mex.getCompilerConfigurations('C++').MexOpt.

В зависимости от вашей платформы (я не видел, как это выглядит под Windows), вам, возможно, придется изменить некоторые пути к компилятору и связанные с нимикаталоги.

Рекомендуется, чтобы настроенные компиляторы C и C ++ совпадали.

1 голос
/ 17 октября 2019

К сожалению, ни один из методов, предоставленных в качестве ответов и комментариев, не сработал. Я только что обнаружил, что это ошибка в MATLAB R2016b и R2017a. Обойти эту проблему можно по следующей ссылке:

mathworks.com / support / bugreports / 1487958

...