Problem mit Kreisverknüpfung

Ich habe eine Klasse A welche Klasse B kennen soll und Klasse B soll Klasse A kennen.

Klasse B referenziert jedoch noch auf die Library "Bluetoothserial.h" und dadurch bekomme ich einen komischen Fehler.

Bevor komische Fragen kommen:

  • Ja die Cpp´s sind leer und machen nichts jedoch habe ich für das Verständnis keine Definition der Klassen eingetragen
  • Nein es liegt kein Problem mit der "Bluetoothserial.h" Datei vor
  • Wenn ich in der BtProvider.cpp das include auf die "WifiProvider.h" library entferne klappt alles super.

Fehler:
Compiling .pio\build\az-delivery-devkit-v4\lib989\BT\BTProvider.cpp.o
In file included from lib\WIFI\WifiProvider.cpp:2:0:
lib\BT/BTProvider.h:6:29: fatal error: BluetoothSerial.h: No such file or directory


  • Looking for BluetoothSerial.h dependency? Check our library registry!
  • CLI > platformio lib search "header:BluetoothSerial.h"
  • Web > PlatformIO Registry

compilation terminated.
*** [.pio\build\az-delivery-devkit-v4\lib7d9\WIFI\WifiProvider.cpp.o] Error 1
================================================================================================= [FAILED] Took 10.10 seconds

Klassen:
BTProvider.h
#ifndef BtProvider_h
#define BtProvider_h

#include <Arduino.h>
#include "BluetoothSerial.h"
#include "NimBLEDevice.h"

class WifiProvider;

class BTProvider
{
public:
BTProvider();
private:
};
#endif

BTProvider.cpp
#include <BTProvider.h>
#include <WifiProvider.h>

WifiProvider.h
#ifndef WifiProvider_h
#define WifiProvider_h

#include <Arduino.h>
class BTProvider;

class WifiProvider
{
public:
WifiProvider();
};

#endif

WifiProvider.cpp
#include <WifiProvider.h>
#include <BTProvider.h>

Man kann dein buntes geschreibsel nicht lesen.
Formatiere den Sketch richtig und setze den in Code-Tags hier rein.

In der Arduino-IDE 1.8.13 bekomme ich das kompiliert:

Der Sketch verwendet 259840 Bytes (19%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 13532 Bytes (4%) des dynamischen Speichers, 314148 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

Man muss halt nur die eigens angelegten Header beim include in den cpp-Dateien nicht im Standard-Include-Pfad, sondern lokal suchen lassen:

// BTProvider.cpp
#include "BTProvider.h"
#include "WifiProvider.h"

// WifiProvider.cpp
#include "WifiProvider.h"
#include "BTProvider.h"

Hallo Walter,

bei mir klappt das immer noch nicht. Liegt es am dem board welches ich verwende?
[env:az-delivery-devkit-v4]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino

Der Code sieht jetzt wie folgt aus:

BTProvider.cpp

#include "BTProvider.h"
#include "WifiProvider.h"

BTProvider.h

#ifndef BtProvider_h
#define BtProvider_h

#include <Arduino.h>
#include <BluetoothSerial.h>
#include <NimBLEDevice.h>

class WifiProvider;

class BTProvider
{
public:
    BTProvider();
private:
};
#endif

WifiProvider.cpp

#include "WifiProvider.h"
#include "BTProvider.h"

WifiProvider.h

#ifndef WifiProvider_h
#define WifiProvider_h

#include <Arduino.h>
class BTProvider;

class WifiProvider
{
public:
    WifiProvider();
};

#endif

Hmm - müsste ich heute Abend mal zu Hause nachsehen, für welches Board ich da gebaut habe.
Meine DevKit V4 liegen noch in der Packstation.

Das war 'NodeMCU-32S' - aber unter der Arduino-IDE. Du scheinst ja ein anderes Build-System zu verwenden.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.