• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

请教RT-Thread在KEIL RTE环境中的用法?

xhuaihe 2017-09-11 浏览量:2359

QQ截图20170911203634.jpg

如上图,RTE里面的components..c会把定义一个线程到指向main函数,

但是我在main函数中再次新建线程的时候,会出现上诉错误----undefined symbol,

请教大神如何解决?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 有點看不董

    所以本來是有Macro?

    如果有的話是需要設置的,但您這問題應該是把她註釋掉了才對,所以編譯沒問題

    而這個是連結問題(Linker),是找不到reference跟include也沒什麼關係

    先確定您這個RTOS .obj檔都有在OBJ/目錄底下

    然後連結正常

    • 发布于 2017-09-12
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:11
  • QQ截图20170911204113.jpg


    如果把main函数中的那一块新建线程的代码注释掉,就没有错误了。


    我是基于RTT在RTE里面的

    blinky example例程修改的

    • 发布于2017-09-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼主,你rt_thread_create函数未包含进mian,添加相应的头文件,同时添加源文件进入工程参与编译。
    • 发布于2017-09-11
    • 举报
    • 评论 1
    • 0
    • 0
xhuaihe 回复了 xiefy21 :这个是肯定包含在里面的了,可以看看下面的图片 回复

  • QQ截图20170911214817.jpg



    上面的图片,展示的是基于KEIL RTE选择RT-Thread的,下图显示的是在#include <rtthread.h>中包含了rt_thread_create这个函数



    QQ截图20170911214916.jpg

    • 发布于2017-09-11
    • 举报
    • 评论 0
    • 0
    • 0

xhuaihe 回复了 汉云 :可以看看楼下新上传的图片 回复
汉云 回复了 xhuaihe :工程中是不是添加 了头文件的路径? 回复
xhuaihe 回复了 汉云 :基于keil RTE环境创建的,不用包含吧,而且搜索目录是没有的。并且在其他文件中,就使用了rt_thread_create函数就没有问题 回复
汉云 回复了 xhuaihe :用不用包含,看看工程的配置。或是把工程上传上来分析下。 回复
xhuaihe 回复了 汉云 :上传到楼下了,请帮忙看看 回复

  • 这个函数没有定义啊。这个是系统的库函数么?如果是,那么是你的库没有包含进工程的原因。
    • 发布于2017-09-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 尝试一下加个extern void,看看问题能否解决
    • 发布于2017-09-12
    • 举报
    • 评论 0
    • 0
    • 0

  • QQ截图20170912084137.png

    全局搜索,只有在rtthread.h头文件中出现过,并且已被包含进去了。

    • 发布于2017-09-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 即使加上extern也没有用

    QQ截图20170912084806.png

    • 发布于2017-09-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是你自己建的工程,光给个编译错误,不好判断。给几个建议虽然不一定对:首先确保.h文件的路径都添加了,然后.C文件都加进来了,ps:这个函数包含这个#include <rtthread.h>头文件确实没错,但是你main函数这样写就算编译过了也不跑不起来的,系统都没初始化,你跑这个创建没用,建议先下官方包,熟悉下系统,在自己建工程
    • 发布于2017-09-12
    • 举报
    • 评论 3
    • 0
    • 0
xhuaihe 回复了 快没时间了 :我知道光跑起来没用,编译都过不去跑啥 回复
快没时间了 回复了 xhuaihe :看下thread.c文件,create函数之前有个RT_USING_HEAP的定义的,你在rtconfig.h里面找找有这个定于吗,没有就定义下 回复
xhuaihe 回复了 快没时间了 :我在RTE里面直接勾选的,rt_thread_create前面没有RT_USING_HEAP这个宏定义,也没有被其他宏定义包含 回复

  • QQ截图20170912094126.png

    加上了一个宏定义竟然通过了,郁闷,感谢  1219279984@qq.com  提了一下宏定义





    尴尬,原来宏定义取消了这个函数块的编译,被宏注释掉了

    • 发布于2017-09-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

请教RT-Thread在KEIL RTE环境中的用法?