【问题标题】:Teensy/Arduino Library compilation errorsTeensy/Arduino 库编译错误
【发布时间】:2017-08-31 08:12:39
【问题描述】:

我目前正在使用 Arduino IDE 为我的 Teensy 编写一个库应用程序,到目前为止,它已经足够简单了。然而,我遇到了一些奇怪的编译错误,我似乎无法理解。我的库包括众所周知的 IRRemote 库,以便我创建几乎是一个包装库的内容,以便更具体地了解我需要与 IR Remote 库交互的方式。我遇到的问题是 IR Remote 库函数之一:

void  sendRaw(const unsigned int buf[],unsigned int len, unsigned int); 

虽然这看起来像是一个直接使用的函数,但我遇到的问题是函数的第一个参数。我已经尝试了各种方法来向这个函数参数传递一些东西,但无论我做什么,它都不会编译。目前我已经设置了一个变量

unsigned int bufferToSend[5] = {1,2,3,4,5}; // data is just for example purposes

当我尝试打电话时

sendRaw(bufferToSend, 5, 38); // Values are just for example purposes

我得到一个编译器错误

undefined reference to `IRsend::sendRaw(unsigned int const*, unsigned int, unsigned int)'

有趣的是,如果我直接从 Arduino .ino 文件中调用相同的函数,而不是通过我的库调用,代码编译并运行得非常好。我是否遗漏了一些明显的东西?

【问题讨论】:

  • 是否链接到定义函数的库?并且函数定义的源文件包含在库的构建中?
  • 是的,你说得很好!在我的头文件中,我包含了库文件的头文件,但是我还需要在我的库中做些什么来包含它吗?
  • 您需要实际link 与实际的library。头文件定义了接口,而不是应该在单独的库中的实现。您是否有以lib 开头并以.a 结尾的文件?或者类似的东西?你如何建立图书馆?
  • 是的,你在这里是对的,我没有链接到二级库我现在觉得很愚蠢。我只需要锻炼如何在 Arduino 中链接它。我了解如何链接 C/C++ 中的库,我想我认为 Arduino 编译器会自动处理所有这些,但显然我错了哈哈!
  • 原来这是一个常见问题;让一个自定义库建立在预先存在的库之上,看起来有关于如何做到这一点的文章。

标签: c++ c arduino teensy


【解决方案1】:

在“一些程序员老兄”的帮助下,我能够解决这个问题。正如非常正确地指出的那样,我实际上并没有从我的库中链接到外部库。之前使用过库链接,我知道这是绝对基础的,但是对于 Arduino 及其性质,当您从 Arduino 脚本中包含时,它会编译与“on-the-go”链接的库,因此我成为思考它的受害者在自定义库中将是相同的。我在下面看到了一篇关于我的确切问题的非常好的文章,它很好地解释了 Arduino 的一些“烟雾和镜子”魔法以及如何解决我在这里遇到的问题。

Advanced Arduino – Including Multiple Libraries In Your Project

【讨论】:

  • 回来为您自己的问题提供解决方案,干得好+1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 2012-01-25
  • 2023-03-13
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多