发现一个奇怪的问题,我导入厂商提供的pack器件包,所有和芯片有关的库函数和头文件都在这里包里。 我也没有改动过官方的这些头文件和库函数的位置,由于我的项目里有多个C文件,有很多C文件都需要包含这些头文件,比如多个C都需要包含ft32f0xx_gpio.h, 但奇怪的是,编译的时候,有些包含这个头文件的C文件报错了,有的又没有报错,报错显示的是“找不到ft32f0xx_gpio.h这个文件”,我点击报错的那个文件,是可以转到定义的,说明系统知道他的位置在哪里,但为什么又显示报错呢? 但有的C文件包含他又不报错,,,,
这套工程,我在keil上编译没有任何问题,在EIDE变成这样,大概是什么原因呢?
TommyXUN
打开 build 目录,在里面找到编译失败的 c 文件 对应的 xxx.__i 文件,里面储存了该文件的编译参数,检查 -I 开头的参数,是否有含有 ft32f0xx_gpio.h 文件的目录存在
xxx.__i
-I
ft32f0xx_gpio.h
admin 图片中Timer_IRQ是打开失败的文件,State_SW是打开正常的文件,我对比了下,这两个文件中-I开头的文件中包含的ft32f0xx_gpio.h的路径是一样的(但都不是正确路径),但State_SW不报错,Timer_IRQ报错了。
我查了下,ft32f0xx_gpio.h的正确路径是H:\ASolutions\FMD_Solutions\Motor_Controller_FT32F0_20220510_VSCode\Motor_Controller_FT32F0_20220510_VSCodeEdite.pack\FMD\FT32F0xx_DFP.1.0.2\Drivers\FT32F0xx_Driver\Inc,和上面两个都对不上。
你提供的截图里,根本没有 ft32f0xx_gpio.h 的包含路径。你把路径加到项目的包含目录里去不就行了
添加包之后,要使能相关的组件,相应的头文件,包含目录才会被真正加入之项目中,否则需要自己手动去加
见:https://docs.em-ide.com/#/zh-cn/chip_support_pack?id=%e4%bb%8e%e5%8c%85%e4%b8%ad%e6%b7%bb%e5%8a%a0%e5%a4%96%e8%ae%be%e7%bb%84%e4%bb%b6
还有在 vscode 上是插件相互协作,eide 只提供编译功能,c/c++ 插件提供跳转高亮,c/c++ 插件能跳转,因为你这个文件就在工作区目录下,当你打开这个工作区的时候,它就已经将整个工作区里的文件全都扫描了一遍,编了索引,它当然能找到;
不管怎么说,c/c++ 插件只是个辅助工具,它只会越来越傻瓜式,在后边帮你做一些工作只是为了让你轻松的看代码;而编译器才是决定一切的;
admin 感谢帮助,现在头文件都包含进去了,没什么问题了。 但是编译的时候,又出现新的问题,编译报错Error L6218E,提示 Not enough information to list image symbols. 提示是链接出了问题,是不是需要在项目属性的“链接库目录”里添加什么文件? 我对链接没研究,百度也没搜到,不知道具体需要添加什么东西,望赐教,感谢
https://discuss.em-ide.com/d/289-keil