2017-02-02 2 views
0

[Bearbeiten: Die Frage ist fehlerhaft, die Datei, die ich als "main.c" beschrieben wurde, war eigentlich "main.cpp" und das war der Grund, warum ich ein Problem hatte, ein C Funktion aus einer C++ Datei. Die Frage ist also falsch und nicht eine Antwort haben, aber wenn Sie diese nicht definiert Symbol Problem haben, denken auch über die Überprüfung Sie nicht C & C++.]Fehler: L6218E: Undefined Symbol drei()

Ich verwende uVision 5 Mischen einer Firmware zu entwickeln aber ich kann den Linker nicht dazu bringen, eine meiner Funktionen zu finden.

main.c:

#include "Test.h" 

int main() 
{ 
    return three(); 
} 

Test.h:

#ifndef TEST_H 
#define TEST_H 

int three(); 

#endif 

Test.c

#include "Test.h" 

int three() 
{ 
    return 3; 
} 

Alle diese Dateien an der Wurzel meines Projekts sind, ich weiß, sie kompiliert werden, als ob ich in ihnen einen Syntaxfehler einführe, meldet der Compiler einen Fehler. Auch auf der Map-Datei suchen produziert, ich sehe, dass drei() entfernt wurde:

Removing test.o(i.three), (4 bytes). 

Zu Testzwecken hatte ich --no_remove Befehlszeile Linker enthält Kartendatei jetzt:

0x0002ba76 0x00000004 Code RO   1 i.three    test.o 

Offensichtlich ist der Linker sich meiner Funktion bewusst und wird sie je nach Flags entfernen oder nicht entfernen.

Egal, es berichtet:

.\build\uvision5\test.axf: Error: L6218E: Undefined symbol three() (referred from main.o). 
Not enough information to list image symbols. 
+0

Ich habe gerade Ihren Code versucht, und es baut sich gut für mich mit einem generischen ARM Cortex M0. Sind Sie sicher, dass 'test.c' zu Ihrem Projekt hinzugefügt wurde und kompiliert wird? –

+0

Danke Guillaume. Der Fehler war woanders, meine Frage ist inkorrekt, main.c war eigentlich main.cpp, also musste die Funktion extern "C" deklariert werden ... Entschuldigung und danke für deine Hilfe! – user1532080

+0

Mögliches Duplikat von [Was ist ein undefinierter Verweis/ein ungelöster externer Symbolfehler und wie behebe ich ihn?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-) symbol-error-und-wie-mache-ich-fix) –

Antwort

1

Flawed Frage, es war tatsächlich ein Fall von Misch C/C++, wobei in diesem Fall werden Sie ein Symbol erhalten fehlt, wenn Sie eine C-Funktion von C aufrufen ++ ohne zu erklären es extern C.

Verwandte Themen