Problemas e Soluções: Usando o Microsoft Visual Studio 2013 no Matlab R2013b para compilar arquivos .mex

Compartilhe

Encontrei este problema ao tentar configurar o Matlab R2013b para usar o Microsoft Visual Studio Ultimate 2013 como compilador de C/C++. O Visual Studio 2013 não está na lista de compiladores suportados pelo Matlab R2013b no Windows de 64 bits.

Ao tentar utilizar o comando ‘mex -setup’ e tentar localizar um compilador automaticamente aparecia o seguinte erro:

>> mex -setup

Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2013b/win64.html

Please choose your compiler for building MEX-files:

Would you like mex to locate installed compilers [y]/n? y

No supported SDK or compiler was found on this computer.
For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2013b/win64.html

Unable to complete successfully.

Tentei instalar o Microsoft Windows SDK 7.1 (Microsoft Windows SDK for Windows 7 and .NET Framework 4), mas também não deu certo. O compilador continuava não sendo encontrado, mesmo tentando selecionar manualmente o caminho.

A solução que encontrei foi um arquivo no File Exchange do Matlab chamado Matlab mex support for Visual Studio 2013 (and mbuild). Basta baixar o arquivo VS2013.zip, e descompactar 5 arquivos que estão dentre dele (alguns com extensão .bat e outros com extensão .stp) nas pastas indicadas pelo arquivo README.TXT.

A solução foi criada pelo autor para o Matlab R2013a, mas funcionou perfeitamente também no MATLAB R2013b, bastando tomar o cuidado de substituir a string “R2013a” por “R2013b” nos caminhos indicados.

Feita a descompactação dos arquivos nas pastas indicadas, executei novamente o “mex -setup” e dessa vez deu certo, como pode ser visto abaixo:

>> mex -setup

Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2013b/win64.html

Please choose your compiler for building MEX-files:

Would you like mex to locate installed compilers [y]/n? y

Select a compiler:
[1] Microsoft Visual C++ 2013 in C:\Program Files (x86)\Microsoft Visual Studio 12.0
[2] Microsoft Visual C++ 2013 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\

[0] None

Compiler: 2

Please verify your choices:

Compiler: Microsoft Visual C++ 2013
Location: C:\Program Files (x86)\Microsoft Visual Studio 12.0\

Are these correct [y]/n?

***************************************************************************
Warning: MEX-files generated using Microsoft Visual C++ 2013 require
that Microsoft Visual Studio 2013 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\(removido)\AppData\Roaming\MathWorks\MATLAB\R2013b\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2013b\bin\win64\mexopts\msvc120opts.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/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html
Building with the -largeArrayDims option enables the new API.
**************************************************************************

Note que, bisonhamente, aparecem duas opções, uma delas com o caminho terminando com uma barra invertida e outra sem a barra. Certifique-se de escolher a opção com a barra, que no meu caso é a segunda, do contrário aparecem erros na hora de compilar.

Escolhendo a primeira opção, erro na compilação (rimou! :)):

>> mex yprime.c
LINK : fatal error LNK1561: entry point must be defined

C:\PROGRA~1\MATLAB\R2013B\BIN\MEX.PL: Error: Link of ‘yprime.exe’ failed.

Escolhendo a segunda opção, funciona perfeitamente:

>> mex yprime.c
>> T=1; Y=1:4;
yprime(T,Y)

ans =

2.0000 8.9685 4.0000 -1.0947

Compilador funcionando. Para deixar meus códigos mais rápidos agora só me falta aprender a escrever os arquivos .mex 🙂

0 0 votos
Article Rating

Compartilhe
Skooter

Skooter é cientista da computação e fundador do Skooter Blog. Tem interesse em tudo relacionado a tecnologia e gosta de economizar fazendo suas compras diretamente do exterior.

Ver Comentários

Share
Publicado por
Skooter

Recent Posts

Estabilizando um Intel Core i9-14900K na Placa Mãe Asus ROG STRIX Z790-E Gaming WiFi

No último mês de fevereiro eu fiz um upgrade no meu computador, colocando os seguintes…

quinta-feira, 25 de abril de 2024

[Review] Câmera WiFi BESDER 8MP PTZ com Visão Noturna, Tela Dupla, e Detecção de Humanos

A Câmera WiFi BESDER 8MP PTZ conta com visão noturna, duas lentes, tela dupla, sistema…

quinta-feira, 18 de abril de 2024

[Review] KONNWEI KW650: Testador de Bateria de Carro e Motocicleta 12V 6V com Análise de Partida e Carga

O KONNWEI KW650 é um equipamento para teste de baterias de carros e de motocicletas,…

quarta-feira, 10 de abril de 2024

Delay no Teclado, Teclas Falhando e Repetindo: ASUS Armoury Crate, Corsair iCue e HWiNFO64

Este é um problema que surgiu após o meu último upgrade, então é provável que…

terça-feira, 02 de abril de 2024

Placa SATA PCIe com Controladora Asmedia ASM1166 não é detectada em placa-mãe com chipset Intel Z790 – Problemas e Soluções

Este é um problema que ocorreu com minha Placa PCI Express 3.0 x4 ZyDAS com…

sábado, 09 de março de 2024

Troca de Switches do Mouse Logitech G502 Hero – Novos: Kailh GM 8.0 – Problemas e Soluções

Há três anos, em 2021, destaquei no Skooter Blog o Mouse Logitech G502 Hero, recebido…

sábado, 13 de janeiro de 2024