为什么在Simulink中出现出版模型的构建过程或在Accelerator模式下运行的模型?金宝app

341意见(过去30天)
当我尝试构建一个内置演示时,我得到一个错误消息,说明构建失败。我有一个支持的编译金宝app器安装和正确设置。
错误消息如下所示:
nmake:致命错误U1073:不知道如何制作'c:\ program'
停止。
make命令返回错误2
' an_error_occurs _during_the_call_to_make'不能被识别为内部或外部命令,
可操作的程序或批处理文件。
在加速器模式下运行的模型的构建日志中可能会发生类似的错误。

接受的答案

Mathworks支金宝app持团队
编辑:Mathworks支金宝app持团队 2018年6月15日
构建过程的问题是由“模型”中的下列行引起的。可“makefile。mk文件包含以下代码:
MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
ALT_MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
matlab_bin = c:\ program files \ matlab \ r2013a \ bin
ALT_MATLAB_BIN = C:\Program Files\MATLAB\R2013a\bin
由于MATLAB_ROOT和ALT_MATLAB_ROOT变量具有相同的值,因此Makefile使用MATLAB_ROOT值与空格。构建过程不知道如何处理路径中空格的文件。MATLAB通常使用短路径名填充ALT_MATLAB_ROOT,通常是“C:\ PROGRA〜1”。但是,在某些Windows系统上,可以禁用生成短路名称。此外,如果MATLAB本身安装在R2015A SP1更新和稍后版本中的空间(如C:\ Program文件)中的路径中,则此问题是修复的并且不会发生问题。
正确的代码应该如下:
MATLAB_ROOT = C:\Program Files\MATLAB\R2013a
alt_matlab_root = c:\ progra〜1 \ matlab \ r2013a
matlab_bin = c:\ program files \ matlab \ r2013a \ bin
alt_matlab_bin = c:\ progra〜1 \ matlab \ r2013a \ bin
有一些解决这个问题的方法。
  • 解决方案1 -使用Windows短名称:
这可能是最简单的解决方案。金宝搏官方网站Windows注册表中有一个设置,可以启用/禁用为文件路径生成短名称。请使用以下步骤更改此设置:
(注意:由于Windows安全设置的程序文件文件夹,此方法可能不能工作。如果在步骤4中收到“Error: Access is denied.”的消息,请使用其他解决方案。)金宝搏官方网站
1.进入Windows开始菜单,搜索“regedit.exe”。将打开一个新窗口。
2.导航到以下位置:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ \文件系统\ NtfsDisable8dot3NameCreation控制
3.将“ntfsdisable8dot3namecreation”的值更改为0。
将值更改为0将使Windows路径中的短名称能够使用短名称。有关此信息的更多信息,请参阅Microsoft的网站:
4.但是,更改上面的值只会设置更改后创建的文件和文件夹的短名称。设置Windows命令提示符中使用“fsutil”函数的短名称。设置短名称的语法如下:
> fsutil文件setshortname
以“C:\程序文件”为例,用户可以发出以下命令将“程序文件”的短名称设置为“programa ~1”。
> fsutil文件setshortname "C:\Program Files" programa ~1
该目录需要在引号中,因为它具有空格。
5.要检查设置的短名称是否正确使用“/ x”选项的“dir”命令显示短名称。
> Dir C:\ / x
更多关于“fsutil”的信息可在这里找到:
  • 解决方案2 -创建一个符号链接到MATLAB安装文件夹:
1.打开Windows命令提示符。然后进入C:目录。
2.创建一个符号链接到安装MATLAB版本的位置。语法如下:
mklink /d
例如,一个典型的MATLAB安装文件夹是C:\Program Files\MATLAB.要创建一个名为MyMatlab的文件夹的链接,请使用以下命令:
C:MyMatlab“C: \ Program Files \ MATLAB”
如果打开新的MyMatlab文件夹,则应查看已安装的每个版本MATLAB的文件夹。
3.为MATLAB创建一个新的快捷方式。这可以放在您的桌面或任何您想要的地方。
4.右键单击快捷方式并打开Properties。
5.转到“快捷方式”选项卡。在“目标:”选项中,将有一个可执行文件的路径,用于从此快捷方式启动matlab。修改此路径以使用新创建的符号链接。对于上面的例子,它应该阅读
C:\ mymatlab \ r2013a \ bin \ matlab.exe
6.从此快捷方式启动MATLAB。通过在命令窗口中键入“matlabroot”而不键入“matlabroot”,验证位置,现在应该在它中没有空格。
7.如果您有多个版本的MATLAB,为每个版本重复步骤3-6,以便它们将从路径上没有空间的位置发射。
此解决方案将适用于新创建的快捷方式。如果你从一个不同的位置启动MATLAB,它将不会使用符号链接,路径中的空格也会有相同的问题。
  • 解决方案3 - 更改MATLAB安装文件夹:
我们使用短路径的原因是为了避免路径中的空白。通过在路径中没有任何空间的位置重新安装MATLAB,您可以解决构建问题。但是,这需要您下载并重新安装MATLAB。
例如,MATLAB可以安装在以下路径上
C: \ MATLAB_Install \ MATLAB \ R2013a
与解决方案2类似,此解决方案将要求您为使用的所有版本重新安装MATLAB。
  • 解决方案4 - 修改模板makefile
解决这个问题的另一种方法是将文件名封装在双引号中。这将导致构建过程按照字面意思处理双引号括起来的文件名,这将导致构建成功。
为此,请打开要使用代码生成的模板makefile。制作此文件的副本并重命名。在此文件中,无论何处,在“$(MATLAB_ROOT)”作为路径的一部分,请在“$”符号和路径中的最后一个字符后放置双重​​报价。例如,如果TMF中的原始线是:
(matlab_root)\ toolbox \ rtw \ targets \ xpc \ target \ build \ xpcblocks} .c.obj:
这一行将被替换为:
“美元(MATLAB_ROOT) \工具箱\ rtw_targets \ xpc目标\ \制造\ xpcblocks”} . c。obj:
在“配置参数” - >“代码生成”中,请确保“模板makefile”选项点指向修改的TMF,否则更改将不会反映在生成的代码中。
需要对使用的每个模板makefiles重复此方法。
MATLAB R2017A的有用文档页面讨论启用带有空格的文件夹名称的构建进程的方法,可以在以下链接找到:
在“Windows上构建进程文件夹支持”一节中提到的限制在上面提到的方法中得到了解决。金宝app
8的评论
卡尔佩雷
卡尔佩雷 2020年12月15日
你好,
我之前有这个问题,并使用解决方案2帮助我从Simulink模型中建立了.dll。金宝app
在后来的一个项目中,我再次遇到了同样的问题,但是解决方案2并没有解决,并且在没有空格的路径上重新安装matlab也没有帮助。奇怪的是,我可以使用matlab 2019a构建,但不使用matlab 2020b或2021b。
同样使用mex -setup更改编译器并没有帮助。我尝试了Mingw,Microsoft Visual C ++ 2015(C),Microsoft Visual C ++ 2017(C)和Microsoft Visual C ++ 2019(c)。
最后的问题似乎是,我的构建文件夹位于F:\驱动器,而matlab和Microsoft Visual c++ 2017 (C)安装在C:\驱动器。
将My Model文件移动到C:\ Drive的文件夹后,构建成功。
基米-雷克南,
布莱希特

登录评论。

更多的答案(4)

vaibhav.
vaibhav. 2016年3月11日
编辑:vaibhav. 2016年3月11日
谢谢,亲爱的,我选择了解决方案2,它工作良好。谢谢

Praveen Mirajkar.
Praveen Mirajkar. 2017年9月4日
你好,所有我得到下面的错误
C: / ProgramData / MAT金宝appLAB / SupportPackages / R2017a /工具箱/目标/ SupportPackages armcortexmbase / cmsis_rtos_rtx / src / mw_signal.c gmake: *没有规则来制作目标`c:/prography/matlab/supportpackages/r金宝app2017a/toolbox/target/supportpackages/freedomk64f/src/ksdk_armgcc_lib/bm/libksdk_platform.a',所需的是`../untitled.elf'所需的。停止。g:\ program files \ matlab \ r2017a \ untitled_ert_rtw> echo the make命令返回错误的错误2 g:\ program files \ matlab \ r2017a \ untitled_ert_rtw> an_error_occurred_during_the_call_to_make'an_error_to_make'没有被识别为一个错误内部或外部命令,可操作的程序或批处理文件。
我已经尝试过所有解决方案仍然无金宝搏官方网站法解决问题,请问任何人都帮忙吗?

卡尔德
卡尔德 2016年4月7日
你好,
我正在使用Matlab 2015b和Matlab 2012b。我尝试了第二种解决方案,但它只使用Matlab 2012B。我不知道如何用matlab 2015b修复它。有其他解决方案吗?
谢谢
2的评论
Richa Gupta.
Richa Gupta. 2016年7月20日
请联系MathWorks技术支持。金宝app

登录评论。


萨莱Selvam V
萨莱Selvam V 2016年9月20日
亲爱的朋友,我很欣赏Mathworks支持团队的努力回答查询。金宝app但是,尽我所知,答案似乎与实际情景略显不大。我面临着同样的错误消息,但我确实非常简单地纠正它,而不是通过这里提到的任何方法。
场景之前更正:
我将我的文件(m文件和包装c文件)存储在一个文件夹中,即:
D: \ \ MATLAB&C \ MATLAB2C \研究CODEGEN \ TutorialToMATLAB2C \ CODERAND
这是一个问题:文件夹名称:“MATLAB&C”和“MATLAB2C”和教程tomatlab2c”。
我将文件夹名称更改为:
D: \ \ MATLABAndC \ MATLABToC \研究CODEGEN \ TutorialToMATLABToC \ CODERAND
这对问题进行了分类。
我的文件:
1)M文件:CoderAnd.m
功能r = coderand ()%#codegen.
指令%#codegen指出函数
%用于代码生成
r = rand ();
2)C包装文件:main.c
/ *
** main.c.
* /
包括< stdio . h >
包括< stdlib.h >
包括“抄队和”
包括“coderand_initialize.h”
包括“coderand_terminate.h”
intmain ()
coderand_initialize ();
printf (“coderand = % g \ n”,coderand());
coderand_terminate();
返回0;
3) m脚本文件:cccoderand.m
cfg = coder.config ('EXE文件');
cfg.cusomsource ='main.c'
cfg.custominclude =D: \研究\ MATLABAndC \ MATLABToC \ CODEGEN \ TutorialToMATLABToC \ CODERAND”
Codegen.-config cfg码码
这就是朋友。谢谢。

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!