używam ubuntu i mogę budować ICUniezdefiniowana odniesienia do `icu_56 :: UnicodeString :: UnicodeString (podpisane char, unsigned short const *, int)”
mam włączone:
#include <unistr.h>
using namespace icu;
to jest mój sposób budować na OIOM:
CPPFLAGS="-DU_USING_ICU_NAMESPACE=0"
CPPFLAGS="-DU_CHARSET_IS_UTF8=1"
export CFLAGS="-DU_CHARSET_IS_UTF8=1 -DU_GNUC_UTF16_STRING=1 -DU_STATIC_IMPLEMENTATION"
export CXXFLAGS="-DU_USING_ICU_NAMESPACE=0 -std=gnu++0x -DU_CHARSET_IS_UTF8=1 -DU_GNUC_UTF16_STRING=1 -DU_HAVE_CHAR16_T=1 -DUCHAR_TYPE=char16_t -Wall --std=c++0x -DU_STATIC_IMPLEMENTATION"
export CPPFLAGS="-DU_USING_ICU_NAMESPACE=0 -DU_CHARSET_IS_UTF8=1 -DU_STATIC_IMPLEMENTATION"
export LDFLAGS="-std=gnu++0x"
./runConfigureICU Linux --enable-static --disable-shared --disable-renaming
make check
sudo make install
następnie odwołuje się do
/usr/local/lib/libicuuc.a
i spróbuj skompilować
icu::UnicodeString s1=UNICODE_STRING("such characters are safe 123 %-.", 32);
ale pojawia się błąd
undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
znalazłem kolejny post tutaj na SO dotyczące tego samego problemu, ale kiedy śledzę kroki pod warunkiem, że nie rozwiązuje mojego problemu i może być inna wersja.
EDIT: Jest to wyjście z IDE na budowę projektu
Cleaning Solution: myProject (Debug)
Cleaning: myProject (Debug)
Removing output files...
Clean complete
Building Solution: myProject (Debug)
Building: myProject (Debug)
Performing main compilation...
Precompiling headers
Compiling source to object files
g++ -MMD "/home/user/myProject/myProject/main.cpp" -g -O0 -std=c++11 -DDEBUG -I"/home/user/myProject/myProject/include" -I"/home/user/myProject/icu/unicode" -I"/home/user/myProject/myProject/.prec/Debug" -c -o "/home/user/myProject/myProject/bin/Debug/main.o"
Generating binary "myProject" from object files
g++ -o "/home/user/myProject/myProject/bin/Debug/myProject" "/home/user/myProject/myProject/bin/Debug/main.o"
"/home/user/myProject/icu/libicuuc.a"
/home/user/myProject/myProject/bin/Debug/main.o: In function `icuTest':
/home/user/myProject/myProject/icuTest.hpp:3: undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
/home/user/myProject/myProject/icuTest.hpp:3: undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
/home/user/myProject/myProject/icuTest.hpp:3: undefined reference to `icu_56::UnicodeString::~UnicodeString()'
/home/user/myProject/myProject/icuTest.hpp:3: undefined reference to `icu_56::UnicodeString::~UnicodeString()'
collect2: error: ld returned 1 exit status
Build complete -- 4 errors, 0 warnings
---------------------- Done ----------------------
Build: 4 errors, 0 warnings
Jeśli chcesz użyć .a plik można można spróbować '/ path/to/file.a' in you linker step – dlmeetei
Używając 'nm', czy będziesz wyglądać, który plik .a ma' UnicodeString :: ~ UnicodeString() ' – dlmeetei
Kiedy" nm libicuuc.a> dump "to robi zawierają wiele odwołań do UnicodeString, ale reszta to śmieci, więc nie wiem, czy patrzę na dekonstruktora, czy nie. – Chris