Komische Fehlermeldung beim Kompilieren

Hallo zusammen,
ich kompiliere gerade ein Programm und bekomme immer eine komische Fehlermeldung, die ich nicht verstehe. Kann mir hier vllt jmd helfen?

Arduino: 1.8.3 (Windows 10), Board: "Arduino/Genuino Uno"

WARNUNG: Kategorie 'Data processing' in der Bibliothek smartBees Inferencing - Edge Impulse ist ungültig und wird auf 'Uncategorized' festgelegt
In file included from C:\Users\xxx\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino:27:0:

C:\Users\xxx\Documents\Arduino\libraries\PDM\src/PDM.h:25:2: error: #error "This library targets only NRF52840 boards, not every mbed target"

 #error "This library targets only NRF52840 boards, not every mbed target"

  ^

In file included from C:\Users\xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/dsp/spectral/spectral.hpp:27:0,

                 from C:\Users\xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/classifier/ei_run_dsp.h:27,

                 from C:\Users\xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/classifier/ei_run_classifier.h:30,

                 from C:\Users\xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/smartbees_inference.h:41,

                 from C:\Users\xxx\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino:28:

C:\Users\xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/dsp/spectral/processing.hpp:26:18: fatal error: vector: No such file or directory

 #include <vector>

                  ^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Viele Grüße

Hier wäre übrigens noch mein sketch:

/* Edge Impulse Arduino examples
   Copyright (c) 2021 EdgeImpulse Inc.

   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software and associated documentation files (the "Software"), to deal
   in the Software without restriction, including without limitation the rights
   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions:

   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   SOFTWARE.
*/

// If your target is limited in memory remove this macro to save 10K RAM
#define EIDSP_QUANTIZE_FILTERBANK   0

/* Includes ---------------------------------------------------------------- */
#include <PDM.h>
#include <smartbees_inference.h>
#include <ArduinoBLE.h>
#include <ArduinoJson.h>
#include <Arduino_HTS221.h>


#define BLE_UUID_STRING                    "1A3AC131-31EF-758B-BC51-54A61958EF82"
#define BLE_UUID_TEST_SERVICE               "9A48ECBA-2E92-082F-C079-9E75AAE428B1"

/** Audio buffers, pointers and selectors */
typedef struct {
  int16_t *buffer;
  uint8_t buf_ready;
  uint32_t buf_count;
  uint32_t n_samples;
} inference_t;

static inference_t inference;
static signed short sampleBuffer[2048];
static bool debug_nn = false; // Set this to true to see e.g. features generated from the raw signal

BLEDevice central;
BLEService service(BLE_UUID_TEST_SERVICE);
BLEStringCharacteristic serviceOutput(BLE_UUID_STRING, BLERead | BLENotify, 200);

/**
   @brief      Arduino setup function
*/
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  while (!Serial);

  pinMode(LED_BUILTIN, OUTPUT);

  if (!BLE.begin()) {
    Serial.println("starting BLE failed!");
    while (1);
  }

  BLE.setLocalName("BeeHive");
  BLE.setAdvertisedService(service);
  service.addCharacteristic(serviceOutput);
  BLE.addService(service);
  BLE.advertise();
  Serial.println("Bluetooth device active, waiting for connections...");

  if (!HTS.begin()) {
    Serial.println("Failed to initialize humidity temperature sensor!");
    while (1);
  }

  if (microphone_inference_start(EI_CLASSIFIER_RAW_SAMPLE_COUNT) == false) {
    ei_printf("ERR: Failed to setup audio sampling\r\n");
    return;
  }
}

/**
   @brief      Arduino main function. Runs the inferencing loop.
*/
void loop()
{

  central = BLE.central();

  if (central) {
    Serial.print("Connected to central: ");
    Serial.println(central.address());
    digitalWrite(LED_BUILTIN, HIGH);
    while (central.connected()) {
      ei_printf("Starting inferencing in 2 seconds...\n");

      delay(2000);

      ei_printf("Recording...\n");

      bool m = microphone_inference_record();
      if (!m) {
        ei_printf("ERR: Failed to record audio...\n");
        return;
      }

      float temperature = HTS.readTemperature();
      float humidity    = HTS.readHumidity();
      StaticJsonDocument<600> doc;
      doc["temperature"] = (round(temperature*10)/10.0);
      doc["humidity"] = (round(humidity*10)/10.0);
      doc["event"] = "";

      ei_printf("Recording done\n");

      signal_t signal;
      signal.total_length = EI_CLASSIFIER_RAW_SAMPLE_COUNT;
      signal.get_data = &microphone_audio_signal_get_data;
      ei_impulse_result_t result = { 0 };

      EI_IMPULSE_ERROR r = run_classifier(&signal, &result, debug_nn);
      if (r != EI_IMPULSE_OK) {
        ei_printf("ERR: Failed to run classifier (%d)\n", r);
        return;
      }

      // print the predictions
      ei_printf("Predictions ");
      ei_printf("(DSP: %d ms., Classification: %d ms., Anomaly: %d ms.)",
                result.timing.dsp, result.timing.classification, result.timing.anomaly);
      ei_printf(": \n");
      float predictions[3];
      for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
        predictions[ix] = (round(result.classification[ix].value * 10) / 10.0);
        //data.add((round(result.classification[ix].value*10)/10.0));
      }

      int maximal = 0, index = 0;
      for (int i = 0; i < 3; i++) {
        if (maximal < predictions[i]) {
          maximal = predictions[i];
          index = i;
        }
      }

      switch (index) {
        case (0):  doc["event"] = "MATICA"; break;
        case (1):  doc["event"] = "NIMATICE"; break;
        case (2):  doc["event"] = "ROJENJE"; break;
        default: doc["event"] = "ERROR"; break;
      }


      String json;
      serializeJson(doc, json);

      if (central.connected()) serviceOutput.writeValue(json);


#if EI_CLASSIFIER_HAS_ANOMALY == 1
      ei_printf("    anomaly score: %.3f\n", result.anomaly);
#endif


      Serial.print("Temperature = ");
      Serial.print(temperature);
      Serial.println(" °C");

      Serial.print("Humidity    = ");
      Serial.print(humidity);
      Serial.println(" %");
    }

    digitalWrite(LED_BUILTIN, LOW);
    Serial.print("Disconnected from central: ");
    Serial.println(central.address());
  }

}

/**
   @brief      Printf function uses vsnprintf and output using Arduino Serial

   @param[in]  format     Variable argument list
*/
void ei_printf(const char *format, ...) {
  static char print_buf[1024] = { 0 };

  va_list args;
  va_start(args, format);
  int r = vsnprintf(print_buf, sizeof(print_buf), format, args);
  va_end(args);

  if (r > 0) {
    Serial.write(print_buf);
  }
}

/**
   @brief      PDM buffer full callback
               Get data and call audio thread callback
*/
static void pdm_data_ready_inference_callback(void)
{
  int bytesAvailable = PDM.available();

  // read into the sample buffer
  int bytesRead = PDM.read((char *)&sampleBuffer[0], bytesAvailable);

  if (inference.buf_ready == 0) {
    for (int i = 0; i < bytesRead >> 1; i++) {
      inference.buffer[inference.buf_count++] = sampleBuffer[i];

      if (inference.buf_count >= inference.n_samples) {
        inference.buf_count = 0;
        inference.buf_ready = 1;
        break;
      }
    }
  }
}

/**
   @brief      Init inferencing struct and setup/start PDM

   @param[in]  n_samples  The n samples

   @return     { description_of_the_return_value }
*/
static bool microphone_inference_start(uint32_t n_samples)
{
  inference.buffer = (int16_t *)malloc(n_samples * sizeof(int16_t));

  if (inference.buffer == NULL) {
    return false;
  }

  inference.buf_count  = 0;
  inference.n_samples  = n_samples;
  inference.buf_ready  = 0;

  // configure the data receive callback
  PDM.onReceive(&pdm_data_ready_inference_callback);

  // optionally set the gain, defaults to 20
  PDM.setGain(80);
  PDM.setBufferSize(4096);

  // initialize PDM with:
  // - one channel (mono mode)
  // - a 16 kHz sample rate
  if (!PDM.begin(1, EI_CLASSIFIER_FREQUENCY)) {
    ei_printf("Failed to start PDM!");
    microphone_inference_end();

    return false;
  }

  return true;
}

/**
   @brief      Wait on new data

   @return     True when finished
*/
static bool microphone_inference_record(void)
{
  inference.buf_ready = 0;
  inference.buf_count = 0;

  while (inference.buf_ready == 0) {
    //delay(10);
    delay(2000);
  }

  return true;
}

/**
   Get raw audio signal data
*/
static int microphone_audio_signal_get_data(size_t offset, size_t length, float *out_ptr)
{
  numpy::int16_to_float(&inference.buffer[offset], out_ptr, length);

  return 0;
}

/**
   @brief      Stop PDM and release buffers
*/
static void microphone_inference_end(void)
{
  PDM.end();
  free(inference.buffer);
}

#if !defined(EI_CLASSIFIER_SENSOR) || EI_CLASSIFIER_SENSOR != EI_CLASSIFIER_SENSOR_MICROPHONE
#error "Invalid model for current sensor."
#endif

Ich habe den Sketch von ProjectHub. Ich möchte auch meine Bienenvölker mit dem Arduino überwachen, so wie der Ersteller. Ich verwende auch ein Arduino Nano 33 BLE Sense.
Hier ist das Projekt:

https://create.arduino.cc/projecthub/delfin-ki/beemonitor-96f5d7

Für den UNO steht die libstdc++ nicht zur verfühgung.

Du hast ein ATMega328P Board.
Passt also nicht.

Warum folgst du dem Vorschlag nicht?

Jetzt hab ich eine viel längere Fehlermeldung, verstehe aber immer noch nichts :joy:

Das Projekt ist für einen

  • Arduino Nano BLE 33 Sense

nicht für einen Arduino UNO.

Arduino: 1.8.3 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Xxx\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10803 -build-path C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198 -warnings=none -build-cache C:\Users\XXX~1\AppData\Local\Temp\arduino_cache_795234 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Xxx\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Xxx\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10803 -build-path C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198 -warnings=none -build-cache C:\Users\XXX~1\AppData\Local\Temp\arduino_cache_795234 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Xxx\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino
Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
WARNUNG: Kategorie 'Data processing' in der Bibliothek smartBees Inferencing - Edge Impulse ist ungültig und wird auf 'Uncategorized' festgelegt
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198\sketch\Bienenmonitor.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\Xxx Näger\Documents\Arduino\libraries\PDM\src" "C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198\sketch\Bienenmonitor.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\Xxx Näger\Documents\Arduino\libraries\PDM\src" "-IC:\Users\Xxx Näger\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src" "C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198\sketch\Bienenmonitor.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\Xxx Näger\Documents\Arduino\libraries\PDM\src" "-IC:\Users\Xxx Näger\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src" "C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198\sketch\Bienenmonitor.ino.cpp" -o "C:\Users\XXX~1\AppData\Local\Temp\arduino_build_349198\preproc\ctags_target_for_gcc_minus_e.cpp"
In file included from C:\Users\Xxx Näger\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino:27:0:

C:\Users\Xxx\Documents\Arduino\libraries\PDM\src/PDM.h:25:2: error: #error "This library targets only NRF52840 boards, not every mbed target"

 #error "This library targets only NRF52840 boards, not every mbed target"

  ^

In file included from C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/dsp/spectral/spectral.hpp:27:0,

                 from C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/classifier/ei_run_dsp.h:27,

                 from C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/classifier/ei_run_classifier.h:30,

                 from C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/smartbees_inference.h:41,

                 from C:\Users\Xxx Näger\Desktop\Arduino Mika\wichtig\Bienenmonitor\Bienenmonitor.ino:28:

C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6\src/edge-impulse-sdk/dsp/spectral/processing.hpp:26:18: fatal error: vector: No such file or directory

 #include <vector>

                  ^

compilation terminated.

Bibliothek PDM in Version 1.0 im Ordner: C:\Users\Xxx\Documents\Arduino\libraries\PDM  wird verwendet
Bibliothek ei-smartbees-arduino-1.0.6 in Version 1.0.6 im Ordner: C:\Users\Xxx\Documents\Arduino\libraries\ei-smartbees-arduino-1.0.6  wird verwendet
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Warum steht da UNO?

Wenn doch:

?????

Du hast Recht, ich ändere es gerade kurz, melde mich gleich wieder

Jetzt heißt es nur noch als Fehler:

fork/exec C:\Users\xxx\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4/bin/arm-none-eabi-g++.exe: Der Dateiname oder die Erweiterung ist zu lang.
Fehler beim Kompilieren für das Board Arduino Nano 33 BLE.

was soll ich da machen?

Das ist ein Windowsproblem. Bei 256 Zeichen ist Schicht mit Pfadnamen. Du könntest die Arduino-IDE irgendwo weiter oben installieren oder die langen Verzeichnisnamen verkürzen.

wie mach ich das?

Ich rate zu: https://docs.arduino.cc/software/ide-v1/tutorials/PortableIDE

Für was soll ich das brauchen? Ich hab die IDE doch schon

Ich versteh nicht ganz genau, was ich jetzt machen soll

Ganz offensichtlich ist der Pfad zu lang.
Also muss der kürzer.

Ja, aber offensichtlich liegt der angemäckerte Kram am falschen Ort!
Also weg damit, oder ignorieren.

Siehe: https://docs.edgeimpulse.com/docs/deployment/running-your-impulse-arduino#code-compiling-fails-under-windows-os und
Nano 33ble Sense Compilation Error Problem - #2 by pert
(Hinweis: Mit 1.8.19 ist auch log4J aus der IDE raus)

Die IDE Version hat doch nichts mit der Hardware Definition zu tun.
Die aktuelle ist übrigens 1.8.5

Die aktuelle ist 1.8.19

Seit 1.8.15 ist der Bug behoben. Steht so im ersten Link und siehe auch den Link zu @pert.

Es ist kein Problem der Länge der Befehlszeile aufgrund von Windows , sondern aufgrund der Beschränkung innerhalb der IDE. Die ist beim TO auch nur etwas um 100 Zeichen. Selbst bei einem langen Eigennamen anstelle von XXXX. Mit V 1.8.15 wurde das behoben.

Die aktuelle Boarddefinition ist 1.8.5, ob du das glaubst oder auch nicht.

Tipp:
Kannst du bei dir selber überprüfen!

image