【问题标题】:Problems with Arduino libraries in the Eclipse environment (__vector_XX)Eclipse 环境中 Arduino 库的问题 (__vector_XX)
【发布时间】:2012-01-10 03:09:47
【问题描述】:

我正在尝试将基于 Arduino IDE 的项目迁移到 Eclipse。该项目非常大(10 个 .pde,使用了大约 20 个库)。我按照 Arduino playground - Eclipse 中的说明编译了核心库并创建了一个基础项目。使用简单的 LED 闪烁程序进行测试时,一切都编译得非常好。

为了使我的应用程序正常工作,我还需要一些库(标准 Arduino 库,例如 SoftwareSerial、SPI 或 Wire)和自定义库。我像使用上面的核心库一样导入它们(我创建了另外两个项目)并编译了它们。一切都很好。

在 Eclipse 中将所有 .pde 导入到基础项目后,将它们转换为类并稍微清理代码最后一个我无法摆脱的问题是多个变量定义,导致如下错误:

./src/main.o: In function `__vector_37':
main.cpp:(.text.__vector_37+0x0): multiple definition of `__vector_37'
./src/MyClass.o:MyClass.cpp:(.text.__vector_37+0x0): first defined here

关键是,我在代码中的任何地方都找不到任何 __vector_XX 变量,也找不到包含 grep 的库。 Eclipse 关于在哪里寻找原因的提示也没有多大帮助。我该怎么办?

【问题讨论】:

  • 您的代码中似乎有问题(main.pde、MyClass.pde)。为了帮助您,我们需要查看这些文件。
  • 我宁愿说 Arduino 库不是用 ArduinoIDE 构建的,因为 Arduino 使用了一些有趣的制作逻辑。我知道有些人可能对那些 _vector 错误很熟悉,只是还没有找到解决这些错误的方法。
  • 查看错误信息。它说有两种不同的定义,一种在main.o,另一种在MyClass.o。它们都不是任何库的一部分。也许问题出在两个文件中都使用的包含文件中。
  • 当然,您通常是对的,两个文件中存在 __vector_37 定义冲突的问题。但问题也是 Arduino 特有的。我刚刚发现了一个在click 之前没有看到的提示。所以我想我建立了一些库,它们都使用相同的中断。
  • 我猜你正在使用 Arduino Mega,因为 ATmega328 上没有 ISR 矢量 37。在 ATmega1280 上,向量 37 表示USART1 Data register Empty

标签: eclipse-cdt arduino avr


【解决方案1】:

[取自问题cmets中@mmm的链接]:

Fix for a similar issue.

【讨论】:

  • 你说得对,我应该以某种方式将其标记为已解决:)。
猜你喜欢
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2022-01-18
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多