Как создать глобальный объект, доступный для src / кода, а также для библиотек lib /?

Я пытаюсь начать работу с PlatformIO и попал в стену с включенными приоритетами и / или переменными областями действия.

Мой код состоит из src/main.cpp программа, а также несколько частных библиотек, которые находятся в lib/<libname>/*.cpp/h место нахождения.

Я хочу иметь глобальный объект внешнего класса (Syslog), которая доступна как для моей основной программы, так и для любых личных библиотек, которые я добавил.

В настоящее время я пробовал 2 подхода, которые оба отказываются компилировать:


Создайте объект в main.cpp с ключевым словом extern, инициализируйте объект в setup() вот так:

SRC / main.cpp:

#include <Syslog.h>
#include <WiFiUdp.h>
WiFiUDP SyslogUDP;
extern Syslog syslog;
void setup()
{
syslog = Syslog(SyslogUDP, "255.255.255.255", 514, "FlyballETS", "FlyballETSApp", LOG_INFO, SYSLOG_PROTO_BSD);
}

Библиотека / GPSHandler / GPSHandler.cpp:

void GPSHandlerClass::init(HardwareSerial * SerialPort)
{
syslog.logf_P("GPS Class initialized!");
}

Это приводит к ошибкам компилятора, таким как:

lib\GPSHandler\GPSHandler.cpp:22:4: error: 'syslog' was not declared in this scope

2-й подход, который я попробовал (это работает в Arduino IDE), создавал небольшой SyslogHelper.h файл, который создал extern Syslog syslog; объект, а затем включить этот вспомогательный файл во все мои личные библиотеки, например так:

SRC / main.cpp:

#include "SyslogHelper.h"#include <WiFiUdp.h>
WiFiUDP SyslogUDP;

void setup()
{
syslog = Syslog(SyslogUDP, "255.255.255.255", 514, "FlyballETS", "FlyballETSApp", LOG_INFO, SYSLOG_PROTO_BSD);
}

SRC / SyslogHelper.h:

#include <Syslog.h>
extern Syslog syslog;

Библиотека / GPSHandler / GPSHandler.cpp:

#include "SyslogHelper.h"void GPSHandlerClass::init(HardwareSerial * SerialPort)
{
syslog.logf_P("GPS Class initialized!");
}

Когда я пытаюсь скомпилировать это в PlatformIO, происходит сбой, потому что в то время, когда он пытается скомпилировать SyslogHelper.h, он, похоже, не знает о местонахождении <Syslog.h> файл:

In file included from lib\GPSHandler\GPSHandler.cpp:7:0:
src/SyslogHelper.h:4:20: fatal error: Syslog.h: No such file or directory

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]