Forum: PC-Programmierung Visual Micro "undefined reference to" Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe leider ein kleines Problem mit meinem Code... Wenn ich diesen 
kompiliere, dann bekomme ich folgende Warnings:
tcp_lwip.cpp.o:In function `loop'
tcp_lwip.ino:64: warning: undefined reference to `lwip_init'
tcp_lwip.ino:75: warning: undefined reference to `netif_add'
tcp_lwip.ino:84: warning: undefined reference to `netif_set_default'
tcp_lwip.ino:87: warning: undefined reference to `netif_set_up'
tcp_lwip.ino:94: warning: undefined reference to `dhcp_start'
tcp_lwip.ino:106: warning: undefined reference to `atsam3x8e_input(void*)'
tcp_lwip.ino:109: warning: undefined reference to `sys_check_timeouts'
tcp_lwip.ino:114: warning: undefined reference to `sys_check_timeouts'
tcp_lwip.ino:132: warning: undefined reference to `echo_init()'
tcp_lwip.ino:139: warning: undefined reference to `atsam3x8e_input(void*)'
tcp_lwip.ino:140: warning: undefined reference to `sys_check_timeouts'
tcp_lwip.ino:140: warning: undefined reference to `atsam3x8e_init(netif*)'
tcp_lwip.ino:140: warning: undefined reference to `ip_input'
tcp_lwip.ino:140: warning: undefined reference to `dhcp_timoutcntr'
tcp_lwip.ino:140: warning: undefined reference to `TxPerfConnMonCntr'
tcp_lwip.ino:140: warning: undefined reference to `TcpFastTmrFlag'
tcp_lwip.ino:140: warning: undefined reference to `TcpSlowTmrFlag'

Hab leider echt keine Ahnung woran es liegen könnte. Wenn ich in Visual 
Micro per rechtsklick auf eine Funktion gehe und dann auf "go to 
definition" etc., lässt sich diese allerdings finden!

Vielleicht ist hier ja jemand der weiß woran es noch liegen könnte. Wäre 
für die Hilfe echt dankbar!!!

Gruß Kilian

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kilian Kellermann schrieb:
> Vielleicht ist hier ja jemand der weiß woran es noch liegen könnte

du hast vergessen die passende lib mit zu linken.

von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Schon mal danke für deine Hilfe!
Habe es mal probiert, aber dennoch bleiben paar Warnings! :/
tcp_lwip.cpp.o:In function `loop'
tcp_lwip.ino:65: warning: undefined reference to `atsam3x8e_init(netif*)'
tcp_lwip.ino:132: warning: undefined reference to `echo_init()'
tcp_lwip.ino:139: warning: undefined reference to `atsam3x8e_input(void*)'
tcp_lwip.ino:140: warning: undefined reference to `atsam3x8e_init(netif*)'

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kilian Kellermann schrieb:
> Habe es mal probiert, aber dennoch bleiben paar Warnings! :/

das sind keine Warnungen!

Es fehlte einfach eine lib oder ein objectfile wo diese Funktionen 
enthalten sind.

von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Tut mir leid aber ich bin immer noch ratlos! Ich weiß echt nicht was ich 
noch machen soll oder hinzufügen soll... Ich habe echt alles 
eingebunden!

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Deinem Linkeraufruf fehlt die Library oder die Objektdatei, in der die 
aufgeführten Funktionen enthalten sind.

Mit dem Einbinden von Headerdateien ist das Problem nicht lösbar.

Eine *.h-Datei ist keine Library, auch wenn es hier zunehmend Leute 
gibt, die das so nennen.

von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Deinem Linkeraufruf fehlt die Library oder die Objektdatei, in der die
> aufgeführten Funktionen enthalten sind.

Wie kann ich das denn machen wenn ich nur einen Ordner voll mit .h - und 
.c-Dateien habe???

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Aha. Du hast also gar keine Library.


Ist denn dieser "Ordner voll mit Dateien" etwas von Dir geschaffenes 
oder kommt das mit der Beschreibung, daß das eine Library sein soll, von 
jemand anderem?

In letzterem Falle sollte da auch ein makefile vorhanden sein.

Im ersten Fall musst Du jede zu Deinem Projekt dazugehörende Datei in 
Dein makefile eintragen, bzw. in die Projektverwaltung Deines "Visual 
Micro" aufnehmen.
tcp_lwip.ino:65: warning: undefined reference to `atsam3x8e_init(netif*)'

Suche die *.c-Datei, in der diese Funktion enthalten ist - und sorge 
dafür, daß diese Datei compiliert wird (es also eine *.o-Datei gibt) 
und daß diese compilierte Datei auch dem Linker vorgeworfen wird.

von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Also es ist bisschen von beidem. Der Ordner ist von jemandem anderen, es 
war aber kein makefile dabei. Visual Micro hat mir aber auch keins 
gemacht...

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Naja, dann wirst Du Dich durch die Bedienung von "Visual Micro" 
durchbeißen müssen. Irgendwo wird es ja vermutlich eine Dokumentation 
davon geben, wie einzelne C-Source-Files zu einem Projekt hinzuzufügen 
sind.

Wieso eigentlich *.ino? Ist das so ein Arduino-Verschnitt?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.