undefinierter Verweis auf 'icu_56 :: UnicodeString :: UnicodeString (signiertes Zeichen, unsigned short const *, int)'

8

Ich betreibe Ubuntu, und ich kann ICU bauen

Ich habe eingeschlossen:

%Vor%

Dies ist meine Build-Methode für ICU:

%Vor%

Ich verlinke dann zu

%Vor%

und versuche,

zu kompilieren %Vor%

, aber erhalte den Fehler

%Vor%

Ich habe hier in SO einen weiteren Beitrag bezüglich des gleichen Problems gefunden, aber wenn ich die angegebenen Schritte befolge, behebt es mein Problem nicht und kann eine andere Version sein.

EDIT: Dies ist die Ausgabe von der IDE beim Erstellen des Projekts

%Vor%     
Chris 06.02.2016, 21:29
quelle

3 Antworten

2

Ich bemerke, dass Ihre g ++ Zeile nicht auf /usr/local/lib/libicuuca.a zeigt, wo Sie sagen, dass Sie icu installiert haben. Es ist offensichtlich kompilieren gegen die Header OK, aber existiert die statische Bibliothek in dem Pfad, den Sie verwenden ("/home/user/myProject/icu/libicuuc.a")?

    
MasterOfEntropy 09.02.2016 16:24
quelle
2

Beim Ausführen:

%Vor%

Hast du die Warnung beachtet?:

%Vor%

Wenn nicht, dann tu es jetzt.

Als nächstes modifizieren Sie Ihr Testprogramm vor allem anderen auf #include <unicode/uconfig.h> , z.B.

main.cpp

%Vor%

Die Datei wird kompiliert und mit libicuuc.a verknüpft.

Sie können, wenn Sie möchten, sicherstellen, dass Vorsatzköpfe wie unicode/uconfig.h und unicode/platform.h werden automatisch vom Compiler zuvor eingefügt alles andere unter Verwendung eines Pre-Include-Headers, z. B.

icu_preinc.h

%Vor%

, die Sie an GCC übergeben oder mit der Option klingeln:

%Vor%

Sie können diese Option in Ihr CPPFLAGS setzen, wenn Sie ein make -basiertes Build-System verwenden.

Bei dem obigen Spielzeugprogramm genügt es, U_DISABLE_RENAMING=1 auf der Kommandozeile zu definieren, ohne <unicode/uconfig.h>

einzubeziehen %Vor%     
Mike Kinghan 24.02.2016 10:55
quelle
1

Ich denke, das Problem liegt in der g ++ -Syntax:

%Vor%

Sie sagen, dass Sie myProject mit der Objektdatei main.o und der Objektdatei libicuuca.a erstellen. Letzteres ist jedoch keine Objektdatei, sondern eine statische Bibliothek. Ich denke du solltest die g ++ Zeile ändern zu:

%Vor%

-L/home/user/myProject/icu/ weist den Linker an, in / home / user / myProject / icu / ordner nach Bibliotheken zu suchen, und -licuuc teilt ihm eine Bibliothek namens libicuuca.a oder libicuuc.so

mit     
Jakub Zaverka 17.02.2016 13:04
quelle

Tags und Links