Fatal error: C3906U: Malformed via file ‘.\objects\system_stm32f10x.__i‘.assembling startup_stm32f1

本文介绍了在遇到Keil编译错误C3906U,提示Malformed via file时的解决方法。问题可能由损坏的临时文件或特定字符(如"()")在文件名中引起。解决方案包括清理项目、手动删除临时文件、检查文件内容和代码错误。作者通过实验发现,使用特殊字符如"()"进行文件命名会导致该错误,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PS:

这种类型的错误通常出现在Kile编译器生成的临时文件(通过使用 .i 文件扩展名)中。通常情况下,这些文件是编译器用来处理预处理和其他编译阶段的输出。但是,由于这里显示的错误是“Malformed”,这可能意味着这些文件已损坏或无效。

为了解决这个问题,有人提出以下几个步骤:

  1. 清理项目:在重新构建项目之前,先尝试清理项目。这将删除生成的临时文件以及其他中间文件。在 Keil 中,你可以在 "Project" 菜单下找到 "Rebuild all target files" 或者 "Clean target files" 选项。

  2. 手动删除临时文件:如果清理项目后问题仍然存在,你可以手动删除这些临时文件。在你的工程目录中找到 .\objects\ 文件夹,并尝试删除 rcc.__i 和 prockeyone.__i 文件,然后重新构建项目。

  3. 检查文件内容:如果上述步骤都无效,你可以尝试检查这些 via 文件的内容,看看是否存在任何异常。这些文件通常位于 Keil 项目文件夹中的 objects 子文件夹中。你可以尝试手动打开这些文件,并查看是否存在任何不正常的内容。

  4. 检查代码中的错误:最后,检查代码中是否存在语法错误或其他编译器无法处理的问题。有时候,编译器可能会由于代码本身的问题而生成损坏的临时文件。

(但以上在我那种情况不适用

My workaround:

      背景:

       由于我每次完成一个Keil实验任务后便在文件名后添加“(完结)”进行重命名如,这导致偶尔一次我再去执行这个文件时出现了如图1.2报错,一开始我以为是我折腾环境变量无意间修改了一些启动代码,但我发现其他还在做的文件却没有这种报错,于是进行对比开展了一系列试验。

                                                                   图1.1

                                                                   图1.2

         试验:

                                                          情况1

                                                           情况2

           结果:

                                                            情况1

 

                              

                                                              情况2

总结:

Keil编译器对文件命名使用类似于"()"这类符号的话会出现Malformed via file 报错(通过文件格式错误),解决方式便不言而喻了,不作死使用类似于"()"这类符号对文件命名就行了!

                                                         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值