Keil5 编译器调试Q0466E问题

[复制链接]
1527|10
 楼主| crystal1987 发表于 2025-6-24 15:10 | 显示全部楼层 |阅读模式
本帖最后由 crystal1987 于 2025-6-24 15:10 编辑

    今天在调试一个新的项目时,在调试的电脑上运行正常,在我自己的电脑中运行,既然出现了异常(Error: Q0466E: An output file can only be specified if there is a single input file),虽然不影响程序运行和编译,但是有个BUG,让我一直不放心,于是就去深究了一下。
代码调试记录2.png
    在网上搜索了一下原因,给出的问题定位是:在keil版本中Options for Target 'rtthread'->User->After Build/Rebuild->Run #1中的参数为fromelf.exe --bin -o $L@L.bin #L,也就是这个参数可能出现了问题;但是这个参数在另外一台电脑中是没有报错的,可能问题不在这里。但是在搜索解决方法的过程中,有个提示说可能是“空格”的问题。
代码调试记录1.png
    于是就把源代码复制到电脑桌面上,打开,运行,既然没有问题;那问题是不是可以定位到程序的路径上?然后把代码发到当前盘根目录下,没问题。代码拷到根目录的下一级文件夹中,问题又出现了。

    最后对比了一下路径,发现根目录的下一级文件夹命名中带有“空格”,然后把文件夹的名称修改了一下,去掉空格,文件就解决了。
    最终遇到Error: Q0466E:的问题的解决方法:是把工程所在文件的路径中带有空格的文件夹重新命名,也就是文件夹命名中不能带“空格”。如以上两张图所示。
    备注:项目所在路径的Source Code文件夹,没有空格程序运行正常;带有空格就会提示异常。

powerantone 发表于 2025-9-30 11:58 | 显示全部楼层
路径中有空格未用引号包裹,命令行参数会被解析为多个部分,导致 fromelf.exe 接收到多个输入文件,从而触发错误 Q0466E。
probedog 发表于 2025-9-30 11:59 | 显示全部楼层
另一台电脑可能用了不同版本的 Keil
stormwind123 发表于 2025-9-30 12:00 | 显示全部楼层
避免路径中的空格,将项目放在不含空格、中文或特殊字符的路径中。
stormwind123 发表于 2025-9-30 12:00 | 显示全部楼层
如果必须使用带空格的路径,确保所有路径都用引号包裹。
豌豆爹 发表于 2025-9-30 12:33 | 显示全部楼层
可能由于路径中的空格导致命令行参数解析错误。
七毛钱 发表于 2025-9-30 13:01 | 显示全部楼层
在 Windows 中,可以使用短路径名
onlycook 发表于 2025-9-30 13:59 | 显示全部楼层
Keil 使用 $L@L.bin 和 #L 之类的宏来指定输出路径和输入文件。当路径包含空格时,这些宏展开后的字符串可能被解析为多个参数。
内政奇才 发表于 2025-9-30 14:01 | 显示全部楼层
升级 Keil 版本,检查是否有更新或补丁。
麻花油条 发表于 2025-9-30 14:34 | 显示全部楼层
升级Keil或用短路径。
海滨消消 发表于 2025-9-30 16:02 | 显示全部楼层
用批处理脚本,编写一个批处理脚本,处理路径中的空格,然后调用 fromelf.exe。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不会是因为你懒

18

主题

350

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部