C- Problem -> undefined reference

Gast #713964
Lesenswert?

Hallo,

ich habe folgendes Problem bein Compilieren!
beim Aufruf der Funktion uip_udp_new bekomm ich folgend meldung:

undefined reference uip_udp_new

obwohl die funktion sowohl deklariert als auch definiert ist!

uip_udp_new ist eine Funktion wie folgt:
struct uip_udp_conn * uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport);
Gast #713981
Lesenswert?

Die Funktion ist in uip.c definiert und in uip.h deklariert.
In den beiden Files (uip.c und uip.h) sind mehrere Funktion
implementiert, die ich auch benütze drin!
bei den anderen gibt es jedoch keine Probleme!

so sieht diese aus:
1
struct uip_udp_conn * uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport)
2
{
3
   register struct uip_udp_conn *conn;
4
// Find an unused local port. 
5
again:
6
   ++lastport;
7
   if(lastport >= 32000) {
8
      lastport = 4096;
9
   }
10
  
11
   for(c = 0; c < UIP_UDP_CONNS; ++c) {
12
      if(uip_udp_conns[c].lport == htons(lastport)) {
13
         goto again;
14
      }
15
   }
16

17
   conn = 0;
18
   for(c = 0; c < UIP_UDP_CONNS; ++c) {
19
      if(uip_udp_conns[c].lport == 0) {
20
         conn = &uip_udp_conns[c];
21
         break;
22
      }
23
   }
24
   if(conn == 0) {
25
      return 0;
26
   }
27
  
28
   conn->lport = HTONS(lastport);
29
   conn->rport = rport;
30
   if(ripaddr == NULL) {
31
      memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t));
32
   } else {
33
      uip_ipaddr_copy(&conn->ripaddr, ripaddr);
34
   }
35
   conn->ttl = UIP_TTL;
36
   return conn;
37
}
#714039
Lesenswert?

xxx wrote:

> kann es auch an was anderem liegen?

Überprüf mal Gross/Kleinschreibung, Unterstriche

Wenn der Linker meldet, dass er die Funktion nicht findet,
dann ist sie auch wirklich nicht da.

Einfache Vorgehensweise:
Geh an eine Codestelle, hol dir den Funktionsnamen in
den Cut&Paste Buffer und setzte ihn von dort wieder
an den anderen Stellen ein. Dadurch ist sichergestellt,
dass die Schreibweise überall übereinstimmt.

Beim nächsten compilieren achte darauf, ob auch wirklich
alle betroffenen Files neu compiliert werden.
Gast #714063
Lesenswert?

es sind im ganzen Programm drei Stellen.
einmal in dem uip.h file
einmal in dem uip.c file
und einmal in der Aufruf in der main!
so weit scheint alles richtig zu sein, fehler in
groß- und kleinschreibung gibt es nicht!
es werden auch alle files compiliert.

den gleichen fehler hab ich weitere 2 mal bei denen
in der fehlermeldung auf eine Zeilenummer im Programm
verwiesen wird in der nichts drin steht!
Persönliche Seite #714066
Lesenswert?

Wird die angegebene Quelltextstelle auch übersetzt?

Nicht dass diese Stelle vor lauter #if #endif Basteleien und 
entsprechenden #define quasi auskommentiert ist.

Beim GCC kannst du das im LSS-File prüfen und z.B. durch eine
#warning "uip_udp_new wird übersetzt!" Meldung im Anweisungsblock der 
der Funktionsdefinition.

Ansonsten mach mal ein make clean, um alle Zwischendateien zu löschen.
#714154
Lesenswert?

Wie du an der Still sicher schon bemerkt hast, ist jetzt
der Zeitpunkt gekommen, an dem man dir sinnvoll nicht mehr
weiterhelfen kann. Die bisher genannten Dinge, sind die
Standardfallen die zu einer Fehlermeldung führen.
Da diese anscheinend nicht zutreffen, gibt es nur noch
eine Möglichkeit: Das komplette Projekt einstellen, sodaß
es hier mal jemand durch den Compiler jagen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren