MounRiver Studio怎么添加现有的.c和.h文件进行编译

新建了一个CH573F工程,现在想将现有的 .c 和 .h 文件进去,按照各种方法还是提示各种undefined reference

现有的文件夹是 BLE_HIDTouchDevice,里面有很多子文件夹,如图

image.png

但是编译时总是提示 很多文件?No such file or directory

https://bbs.21ic.com/icview-3037286-1-1.html?_dsign=f44376cc,参考了这个连接也不行啊

像keil里面,直接将现有的.c 和 .h 文件直接复制到工程目录,然后再添加一下目录地址就可以了的, 但是这个?MounRiver Studio怎么也添加不成功

1660294688190347.png这个是?添加了 path 路径


编译的时候提示多个函数没有定义

1660295626872519.png

这个添加现有 文件 是怎么操作的呢

像keil里面,直接将现有的.c 和 .h 文件直接复制到工程目录,然后再添加一下目录地址就可以了的, 但是这个 MounRiver Studio怎么也添加不成功



image.png添加了 path 路径


编译的时候提示多个函数没有定义

image.png


您好,如下图所示,如果您工程此处没有工程根目录的话,直接复制进去文件夹到工程根目录下的话C文件不会参与编译,两种方法

1 点击右侧  add folder 选择,这样以后再复制文件夹到此工程,也无需再次添加。

2 点击右侧 add folder 选择复制进来的文件夹,以后再复制文件夹到此工程,重复同样操作。

image.png


image.png


我重新新建了一个工程,只添加 “源位置”,然后还是 提示 文件不存在,是不是哪里没有配置对


只添加这个 源位置 就可以了吗, 我这样操作后,还是不行啊 


我是将 BLE_HIDTouchDevice 整个文件夹复制到 工程的文件夹根目录,然后在 点击右侧 add folder 选择复制进来的文件夹

再进行编译还是提示错误


您好 ,我看您上面发的添加了头文件位置,就没有说头文件添加位置。一般来说,使用内置模板,源位置都会有整个目录,所以复制进去的文件夹默认都会参与编译,不需要添加,遇到问题的时候可以查看一下是否没有根目录。一般来说只需要添加头文件,头文件添加位置就是你上面给图的地方,或者如下图所示。

image.png


新建的项目是有根目录的,然后我就将 BLE_HIDTouchDevice 这整个文件夹复制到 项目根目录下了,并且也保证了只有一个main函数,其它设置都没有改, 也没有在上面说的 在  GNU RICS-V Cross C Compiler 里面更改设置了,但是编译还是会出现一堆 不存在的文件,这些文件都是在这个 BLE_HIDTouchDevice里面的

image.png


经过几天的不断尝试, 终于弄好了

首先说明下,我的目的,现在是需要将BLE的例程全部单独拿出来使用,但是EVT里面都是多个工程共用了相同的驱动文件夹,一旦改动,会导致其它例程也会收到影响,所以我就新建了一个BLE_HIDTouchDevice文件夹,用来存放蓝牙HID触摸的驱动程序,这个文件夹里面 有 4个子文件夹,分别是 如下图

image.png

都是从EVT例程中复制出来的。其中hidtouch_main.c就是 main函数文件,

现在是 直接 新建一个573项目,方法:文件——新建——MounRiver工程

image.png

新建好工程之后,然后直接将BLE_HIDTouchDevice整个文件夹复制,在CH573F_BLETouch工程名上右键 选择粘贴,这时整个文件夹就在工程项目下了

image.png

因为新建的工程自带一个main函数文件,我就把 src文件夹里面的 main.c文件里面的 int main()函数整个屏蔽注释掉,这样就只剩下?hidtouch_main.c这一个 含有main()函数,因为用到了 573的蓝牙,所以需要配置 一下,下面也就是最关键的,在这里也是被折腾了几天的原因,官方没有这个相关说明,也是稀奇,不知道是不是我没有找到还是怎么。

同样是 在项目CH573F_BLETouch工程名上右键,选择 Properties

image.png

然后 在 下图标识位置设置

微信截图_20220815172226.png

image.png

这里2个添加缺一不可,至于为啥要 添加CH57xBLE,只是对比例程里面多一个这个,而且这个也不是有选项选择的那种,需完全手动填写,不知道为什么必须写,然后下面的LIB路径也是需要填,这个倒是好理解,告诉编译器lib文件的路径位置。


还需要在 下图位置Include 里面添加?BLE_HIDTouchDevice文件夹里面 所有子文件夹的路径

image.png


最后 应用并关闭,再次编译就 成功了,


所以至此折腾2天的问题解决了,在网上也翻烂了,都没有说明什么问题的,最后也是误打误撞弄好了


谢谢楼主分享解决方法,本人正好遇到此问题,按照此方法成功解决。


其实可以采用#include “相对于main函数的目录/文件名”得到方式也可以解决。

image.png

比如main中要应用OLED里面的文件可以写#include “OLED/OLED.h”

比如main中要应用RTTHREAD里面的文件可以写#include “../rtthread/rtcconfig.h”



只有登录才能回复,可以选择微信账号登录