Forum: Mikrocontroller und Digitale Elektronik undefined reference?


von Bastler (Gast)


Lesenswert?

Ich füge in einem CPP Quellcode einen C-Header ein und um schließe 
diesen mit extern "C" {}. Wenn ich auf die aufgerufene Funktion klicke 
und open declaration sage, springt eclipse auch zu dieser Funktion. Beim 
Übersetzen erhalte ich jedoch den Fehler: undefined reference. Was 
übersehe ich?

STM32CubeIde, aci_gap_init und aci_gap_set_discoverable können nicht 
gefunden werden. Ich sehe den Fehler nicht, obwohl ich das schon 
hunderte Male gemacht habe.
1
extern "C" {
2
#include "ble_core.h"
3
}
4
5
int main(void){
6
  tBleStatus ret;
7
8
  uint16_t gap_service_handle, gap_dev_name_char_handle, gap_appearance_char_handle;
9
  const char *name = "12345678";
10
  ret = aci_gap_init(GAP_PERIPHERAL_ROLE, 0,
11
         8,
12
         &gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
13
14
  ret = aci_gap_set_discoverable(
15
          ADV_IND,
16
      0x0020,
17
      0x4000,
18
          PUBLIC_ADDR,
19
          NO_WHITE_LIST_USE, /* use white list */
20
          8,
21
          (uint8_t*) name,
22
          0,
23
          NULL,
24
          0,
25
          0);
26
27
  while (1) {
28
  }
29
}

von A. B. (funky)


Lesenswert?

Werden die Source-Files in denen die Funktionen implementiert sind denn 
mit kompiliert/sind die dem Projekt hinzugefügt?
Oder falls das eine eine LIB ist musst du diese mit dazulinken

von Oliver S. (oliverso)


Lesenswert?

Die offensichtliche Fehlerursache "fehlende lib" hast du ausgeschlossen?

Oliver

von Bastler (Gast)


Lesenswert?

Beim Übersetzen sehe ich, dass sämtliche .C Dateien nicht übersetzt 
werden. Normalerweise macht die CubeIDE das automatisch.

Oliver S. schrieb:
> Die offensichtliche Fehlerursache "fehlende lib" hast du ausgeschlossen?

Ja, weil ich hier nur Sourcen übersetze und keine lib benötige.

von Bastler (Gast)


Lesenswert?

Gelöst: Es war ein Exclude from Build gesetzt, hat mir eclipse aber 
nicht im Project Explorer angezeigt ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.