попытка сделать модульный код wemos d1 вызывает collect2: ошибка: ld вернул 1 статус выхода статус выхода 1
#include "connection.h"
void setup() {
Serial.begin(115200);
Funcs::Connect conn;
conn.connectWifi();
}
void loop() {
}
затем файл connection.h:
// connection.h
namespace Funcs
{
class Connect
{
public:
void connectWifi();
};
}
а затем connection.cpp
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "connection.h"
const char* ssid = "ssid";
const char* password = "password";
namespace Funcs
{
void connectWifi() {
// Подключаемся к сети Wi-Fi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(10);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected with ip ");
Serial.println(WiFi.localIP());
}
}
При компиляции я получаю эту ошибку:
/Library/Arduino15/packages/esp8266/hardware/esp8266/2.5.2/cores/esp8266/HardwareSerial.h:76:
undefined reference to `Funcs::Connect::connectWifi()'
collect2: ошибка: ld вернул 1 статус выхода
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board WeMos D1 R1.
Но в моем коде нет Funcs::Connect::connectWifi()
, он был в старом коде.
@Ciasto piekarz, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 0
Вы вызываете Funcs::Connect::connectWifi() прямо здесь:
conn.connectWifi();
поскольку conn имеет тип Funcs::Connect
Но вы определили функцию Funcs::connectWifi():
namespace Funcs
{
void connectWifi() {
где, я думаю, вы хотели, чтобы connectWifi был членом этого класса Connect.
namespace Funcs
{
void Connect::connectWifi() {
Это не единственная проблема с вашим кодом, вы также создаете экземпляр в настройках и позволяете ему выйти за рамки после вызова только одной функции. Но это другая ошибка. Это юридический код, просто, вероятно, не делает то, что вы хотите.
,
@Delta_G
Смотрите также:
- Получена ошибка недопустимого преобразования из 'const char*' в 'const uint8_t*
- устаревшее преобразование из строковой константы в 'char*'
- как быстро loop() работает в Arduino
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Ошибка 'Serial' was not declared in this scope
- как отправить аргумент объектам ESP8266WebServer в функции
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
Ваш файл connection.cpp неверен. Взгляните на [Код класса и заголовочные файлы](https://www.learncpp.com/cpp-tutorial/89-class-code-and-header-files/), чтобы узнать, как следует определять методы класса., @hcheung