2016-11-10 2 views
-1

Ich übersetze eine Anwendung für das Zielgerät mit ARM-Bogen mit Green Hills Toolchain (das Gerät läuft INTEGRITY OS), aber es mit einem Fehler wie dem(Fehler) unaufgelöste Symbole beim Erstellen C++ - Anwendung für ARM mit Green Hills Toolchain

Fehler
__vec_new from ... 
__vec_delete from ... 

Ich verstehe nicht, was es bedeutet und wie es gelöst wird. Kann mir jemand helfen?

+0

Sie scheinen * umbenannt Kompilieren von C++ - Code, aber nicht Verknüpfen der C++ - Standardbibliothek, die Implementierungen für die Operatoren "new" und "delete" bereitstellt. – Clifford

+0

Ich suchte in meinem Arm Compiler installiert Ordner aber nicht gefunden die Datei libstdC++. A oder so ähnlich. Können Sie mir den Dateinamen der Bibliothek vorschlagen, die die Implementierung von new/delete enthält? – tuanpm

+0

Sie müssten dann Informationen über die Toolchain zu Ihrer Frage hinzufügen (zB gcc, armcc, IAR, Green Hills oder andere und Versionsnummer), und Sie sollten die Frage wirklich so korrigieren, wie ich es vorgeschlagen habe (dh das gesamte Build-Protokoll so posten) Wir können den Aufruf des Compilers und die verwendeten Optionen sowie die vollständigen Fehlermeldungen sehen, ansonsten raten wir). Es ist möglich, dass Ihre Frage kein Duplikat ist und wieder geöffnet werden kann, aber weitere Informationen sind erforderlich (bearbeiten Sie die Frage - schreiben Sie keine Kommentare mit relevanten Informationen - SO ist kein Diskussionsforum). – Clifford

Antwort

2

Nicht aufgelöste Symbole zeigen an, dass der erforderliche Objektcode oder die Bibliotheken, die diese Symbole definieren, nicht verknüpft sind. Diese bestimmten Symbole sind höchstwahrscheinlich auf Implementierungen der C++ - Operatoren new und delete zurückzuführen und weisen höchstwahrscheinlich darauf hin, dass Sie die C++ - Bibliothek nicht verknüpft haben. Ich bin mit der Green Hills-Werkzeugkette nicht sehr vertraut, aber in Fällen, in denen Sie den Linker separat zum Compiler aufrufen, müssen Sie möglicherweise explizit die C++ - Verknüpfung angeben.

Bei Verwendung einer IDE ist es möglich, dass Sie ein C-Projekt erstellt, aber C++ - Code hinzugefügt haben. Dies kann Linkeroptionen zur Folge haben, die C++ - Unterstützung und Bibliotheken nicht verbinden.

Der Compiler von Green Hill verfügt über eine Auswahl von C++ - Bibliotheken, die entweder durch die Sprachvariantenoption oder die Option zum Überschreiben von Linkern ausgewählt werden. Diese Optionen können in den MULTI IDE-Einstellungen oder in der Befehlszeile festgelegt werden, je nachdem, wie Sie Ihr Projekt verwalten. Lesen Sie die Compiler/Linker Dokumentation - ich habe folgendes gefunden:

enter image description here

Sie Zugriff auf die gesamte Dokumentation haben sollten, im Anschluss an diese die Seiten beschreiben, wie teh Linker sucht Bibliotheken und wie alternative Bibliotheken angeben. Wenn Sie die automatische Bibliothekssuche unter Angabe von -nostdlib deaktiviert haben, wird die automatische Verknüpfung nicht durchgeführt und Sie müssen die erforderlichen Bibliotheken explizit verknüpfen.

+0

Beachten Sie, dass diese Antwort ein Platzhalter ist, für den explizitere Compiler/Linker-Optionen vom OP ausstehen. Ich werde es aktualisieren, wenn die Information bevorsteht. – Clifford

0

ich den Fehler behoben haben

Die Ursache ist die Projektquelle eine Datei * .c Quelle enthält sie enthalten und

ich es CPP dann der Fehler verschwunden

Verwandte Themen