c++ - 未定义对 Arduino C++ 中类函数的引用

标签 c++ arduino

我对 Arduino 还很陌生,最近得到了几个 VEX 机器人 3 线电机,我正试图用它们来构建一个简单的机器人。我正在为此编写一个库,并编写一个简单的代码来测试它。当我运行这段代码时,出现错误:

Arduino: 1.6.3 (Mac OS X), Board: "Arduino Uno"

RobotTestDrive.cpp.o: In function `setup':
/Users/pawlak/RobotTestDrive.ino:5: undefined reference to `RobotVEXMotor::RobotVEXMotor(int)'
/Users/pawlak/RobotTestDrive.ino:6: undefined reference to `RobotVEXMotor::RobotVEXMotor(int)'
/Users/pawlak/RobotTestDrive.ino:8: undefined reference to `RobotVEXMotor::SetInvert(bool)'
/Users/pawlak/RobotTestDrive.ino:10: undefined reference to `RobotVEXMotor::SetPower(long)'
/Users/pawlak/RobotTestDrive.ino:11: undefined reference to `RobotVEXMotor::SetPower(long)'
collect2: error: ld returned 1 exit status
Error compiling.

这是我正在使用的程序:

#include </Users/pawlak/Documents/Arduino/libraries/VEX_Robot_Control/VEX_Robot_Control.h>

void setup() 
{
  RobotVEXMotor LeftMotor(11);
  RobotVEXMotor RightMotor(3);

  LeftMotor.SetInvert(true);

  LeftMotor.SetPower(1);
RightMotor.SetPower(1);
}

void loop() 
{
}

这是 .h 文件:

#ifndef VEX_Robot_Control_h
#define VEX_Robot_Control_h

#include "Arduino.h"

class RobotVEXMotor
{
    public:
        RobotVEXMotor(int pin);
        void SetPower(long power);
        void SetInvert(bool yn);
    private:
        int m_pin;
        int m_yn;
};

#endif

这是 .cpp 文件:

#include "Arduino.h"
#include "VEX_Robot_Control.h"


RobotVEXMotor::RobotVEXMotor(int pin)
{
    pinMode(pin, OUTPUT);
    m_pin = pin;
}

void RobotVEXMotor::SetPower(float power)
{
    analogWrite(pin, int((m_yn * power * 126) + 127));
}

void RobotVEXMotor::SetInvert(bool yn) //since motors are mirror to each other
{
    if(yn = true)
    {
        m_yn = -1;
    }
    else
    {
        m_yn = 1;
    }
}

我知道这是过去出现过的话题;但是,我似乎无法按照不同线程上的说明解决问题。

最佳答案

#include-ing 源代码中库的 .h 是不够的;您还需要告诉链接器将二进制代码包含在您的可执行文件中。每https://www.arduino.cc/en/Reference/Libraries ,

To use a library in a sketch, select it from Sketch > Import Library.

关于c++ - 未定义对 Arduino C++ 中类函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468779/

相关文章:

c++ - Eclipse 索引器不工作

c++ - 将使用 ExternalProject_Add 构建的库链接到使用 CMAKE_CXX_COMPILER 配置的项目时出错

c++ - 在 Windows 启动时调用应用程序无法正常启动

javascript - 如何为 Arduino 或类似的微 Controller 编写 JavaScript 编译器?

C++,用 lambda 实现 typedef?

c++ - 嵌套变体的简洁初始化语法?

%p 和 cout &ptr 之间的 C++ 区别

c++ - 为 Arduino 开发的 Xcode

java - 我是否使用 jSerialComm 以错误的方式读取 Arduino 传入数据?

Arduino AnalogWrite() 两个引脚之间仅在一个方向上工作