c++ - 运行 Simulink 模型来生成 C/C++ 代码进行编译

标签 c++ matlab simulink mex

当我尝试运行 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 编译器。另外,我检查了 Matlab 中的 LIBPATH 是否设置正确。我也在以管理员权限运行Matlab。

如何解决LINKNMAKE错误?

最佳答案

Visual Studio Express 版本为 no longer supported .

当您运行 mex -setup 时,选择 SDK 7.1( download here ,在安装过程中选择 x64 编译器)。

另外请确保安装 .NET Framework 4.0 runtime .

大然而:有了SDK,就有a bug ,其中编译器被删除( details from MS )!看看here too 。补丁位于 Microsoft's website .

参见this support article有关如何下载和配置 SDK for MATLAB 的提示。也许确认在安装中选择了编译器。

关于c++ - 运行 Simulink 模型来生成 C/C++ 代码进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873596/

相关文章:

matlab - 在函数范围内加载总线定义

c++ - C++ 中的 char* 列表

c++ - 使用它的结构指针访问函数内的结构

matlab - 准确表示整数的 double 除法(当它们可整除时)

matlab - 当 printf 位于从 s-function 调用的单独的 c 文件中时,如何使它工作?

matlab - 即使在 Simulink 中使用过去的 SimState 时也可以设置自定义随机数生成器种子

c++ - 在这种情况下,基类到底是什么?

c++ - 我应该如何处理编写一段确定订阅包节省的代码的逻辑

matlab - 如何更改 MatLab 图形的轴限制和刻度步长?

matlab - 如何将多个行向量与矩阵进行比较?