此问题在此处已有答案:
(39个答案)
3天前关闭。
我正在为七段显示器创建一个Arduino库,并为此编写了.cpp和.h文件。当我在main中声明object时,如下所示:
shiftreg_7segdisplay segment1=shiftreg_7segdisplay(2);
它给出错误:在函数global constructors keyed to 65535_0_7seg_display_lib.cpp.o.1740': <artificial>:(.text.startup+0x60): undefined reference to
shiftreg_7segdisplay::shiftreg_7segdisplay(int)'中
我的代码:
#include "7seg_display_lib.h"
#include "Arduino.h"
shiftreg_7segdisplay segment1=shiftreg_7segdisplay(2);
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop()
{
// put your main code here, to run repeatedly:
}
//My .cpp file:
#include "7seg_display_lib.h"
#include "Arduino.h"
void shiftreg_7segdisplay::begin(){
pinMode(DATA_PIN,OUTPUT);
pinMode(LATCH_PIN,OUTPUT);
pinMode(CLOCK_PIN,OUTPUT);
}
//My .h file:
#pragma once
#include "Arduino.h"
class shiftreg_7segdisplay{
public:
shiftreg_7segdisplay(int x);
void begin();
#define DATA_PIN 8 // Pin connected to DS of 74HC595
#define LATCH_PIN 9 // Pin connected to STCP of 74HC595
#define CLOCK_PIN 10 // Pin connected to SHCP of 74HC595
};
2条答案
按热度按时间egdjgwm81#
在你的
.h
文件中,你声明了一个构造函数shiftreg_7segdisplay(int x);
,它接受一个int
作为参数。但是在你的.cpp
文件中没有定义这样的函数,因此出现了错误。唯一定义的函数是void shiftreg_7segdisplay::begin()
。在您的
.cpp
文件中添加它的实现:zour9fqk2#
上面的答案几乎90%正确,除了构造函数的定义中写了void返回类型。构造函数的定义丢失了,只在头中声明而没有定义。谢谢。