Пока я пытаюсь запустить модель simulink, возникает следующая ошибка, связанная с компиляцией и компоновкой кода C / C ++.

C:\Comms\slprj\_sfprj\quantizer_sim\_self\sfun\src>call "mexopts.bat"  

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 
Copyright (C) Microsoft Corporation.  All rights reserved. 

### Compiling "quantizer_sim_sfun.c" 
    cl.exe /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD   /I "C:\Program Files\MATLAB\R2012b\extern\include" /I "C:\Program Files\MATLAB\R2012b\simulink\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\mex\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\debugger\include"  "quantizer_sim_sfun.c" 
quantizer_sim_sfun.c 
### Compiling "quantizer_sim_sfun_registry.c" 
    cl.exe /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD   /I "C:\Program Files\MATLAB\R2012b\extern\include" /I "C:\Program Files\MATLAB\R2012b\simulink\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\mex\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\debugger\include"  "quantizer_sim_sfun_registry.c" 
quantizer_sim_sfun_registry.c 
### Compiling "c1_quantizer_sim.c" 
    cl.exe /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD   /I "C:\Program Files\MATLAB\R2012b\extern\include" /I "C:\Program Files\MATLAB\R2012b\simulink\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\mex\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\debugger\include"  "c1_quantizer_sim.c" 
c1_quantizer_sim.c 
### Compiling "c2_quantizer_sim.c" 
    cl.exe /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD   /I "C:\Program Files\MATLAB\R2012b\extern\include" /I "C:\Program Files\MATLAB\R2012b\simulink\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\mex\include" /I "C:\Program Files\MATLAB\R2012b\stateflow\c\debugger\include"  "c2_quantizer_sim.c" 
c2_quantizer_sim.c 
### Linking ... 
    link.exe /nologo /dll /OPT:NOREF /export:mexFunction  /OUT:quantizer_sim_sfun.mexw64 /map:"quantizer_sim_sfun.map"  "C:\Program Files\MATLAB\R2012b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2012b\stateflow\c\debugger\lib\win64\sfc_debug.lib"  "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2012b\lib\win64\libippmwipt.lib"   "C:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft\libmwblascompat32.lib" @quantizer_sim_sfun.mol 
LINK : fatal error LNK1104: cannot open file 'MSVCRT.lib' 
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe"' : return code '0x450' 
Stop. 



Error using quantizer_script (line 24)
Error using targetman>throw_make_error (line 588)
(SLSF Diagnostic)

В настоящее время Matlab настроен с помощью компилятора Visual Studio 2010. Кроме того, я проверил, что LIBPATH правильно установлен из Matlab. Я также запускаю Matlab с правами администратора.

Как можно решить ошибки LINK и NMAKE?

2
brandbir 5 Апр 2014 в 01:46
Повторно запустите mex -setup. См. здесь.
 – 
chappjc
5 Апр 2014 в 01:52
Когда я запускал mex -setup, mex находит компилятор Visual C ++ 2010, однако возникает следующая ошибка, даже если SDK установлен в отдельной папке установки: Ошибка: не удалось найти 64-разрядный компилятор. Это может означать, что не установлены «Компиляторы и инструменты X64» или Microsoft Windows Software Development Kit (SDK). Для сборки 64-битных MEX-файлов Microsoft Visual C ++ 2010 требует, чтобы эти два пакета были установлены правильно.
 – 
brandbir
5 Апр 2014 в 02:26
Visual C ++ 2010 Express или другая редакция?
 – 
chappjc
5 Апр 2014 в 02:26
Да, издание Express
 – 
brandbir
5 Апр 2014 в 02:29

1 ответ

Лучший ответ

Выпуски Visual Studio Express больше не поддерживаются.

При запуске mex -setup выберите SDK 7.1 (скачать здесь, при установке выберите компиляторы x64).

Также не забудьте установить среду выполнения .NET Framework 4.0. .

Однако большой : в SDK есть ошибка, из-за которой компиляторы удаляются (подробности из MS)! Проверьте это здесь тоже . Патч находится на веб-сайте Microsoft.

См. эту статью поддержки для получения советов по загрузке и настройке SDK для MATLAB. Возможно, подтвердите, что компиляторы были выбраны при установке.

2
chappjc 5 Апр 2014 в 02:40