gpt4 book ai didi

c - 这是如何未定义的?

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:10 24 4
gpt4 key购买 nike

我试图通过在 IDE 中声明一个新的硬件“板”来让自定义机器人与 Arduino IDE 一起工作。这包含所有映射和诸如此类的东西,但存在一个我可以访问源的库。

Arduino IDE生成cpp文件如下:

    #line 1 "cbotj.ino"
#include "Arduino.h"
void setup();
void loop();
#line 1
void setup()
{
LED_open();
}

void loop()
{

}

然后我得到错误:

cbotj.cpp.o: In function `setup':
/Applications/cbotj.ino:3: undefined reference to `LED_open()'

现在在 Arduino.h 中用于我拥有的硬件核心

SUBSYS_OPENSTAT LED_open( void );

该函数本身在核心硬件函数(例如 pinMode)中的另一个 .c 文件中实现,并且完全有效,因为它可以作为其他 IDE(例如 Atmel 的 AVR Studio 4)的编译库和 6.

为什么我得到 undefined reference ?包括 header 等。

如果我在引脚上使用 pinMode 之类的东西使 LED 工作正常,则选择硬件,因为它可以正常工作。

TIA

最佳答案

当链接到 C++ 项目中的 .c 文件中的函数时(这似乎是您拥有的),you need to declare the function as extern "C".

尝试更改头文件';

SUBSYS_OPENSTAT LED_open( void );

extern "C" {
SUBSYS_OPENSTAT LED_open( void );
}

编辑:似乎不止一个文件对 C++ 感到困惑,请尝试将所有 C 包含在您的 cpp 文件中的 extern "C" 中;

extern "C" {
#include "Arduino.h"
}

void setup();
void loop();

void setup()
{
LED_open();
}

void loop()
{

}

关于c - 这是如何未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com