Estoy compilar mi proyecto y ver enlace problema

$ g++ -Wl,-z,now -Wl,-z,relro -pthread -Wl,-z,noexecstack -fPIC -Wl,--threads -Wl,--thread-count=4 -B../../third_party/gold -L. -Wl,-uIsHeapProfilerRunning,-uProfilerStart -Wl,-u_Z21InitialMallocHook_NewPKvj,-u_Z22InitialMallocHook_MMapPKvS0_jiiix,-u_Z22InitialMallocHook_SbrkPKvi -Wl,-u_Z21InitialMallocHook_NewPKvm,-u_Z22InitialMallocHook_MMapPKvS0_miiil,-u_Z22InitialMallocHook_SbrkPKvl -Wl,-u_ZN15HeapLeakChecker12IgnoreObjectEPKv,-u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv -Wl,--icf=none -Wl,-rpath=\$ORIGIN/lib/ -Wl,-rpath-link=lib/ -o cameo -Wl,--start-group obj/cameo/src/runtime/app/cameo.cameo_main.o obj/media/libmedia_sse.a ...(omitted many *.a here) -Wl,--end-group -lX11 -lXcursor -lXrandr -lXrender -lrt -ldl -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lXtst -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lXi -lXcomposite -lasound -lXdamage -lXext -lXfixes -lnss3 -lnssutil3 -lsmime3 -lplds4 -lplc4 -lnspr4 -lgconf-2 -lresolv -ldbus-1 -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lgnutls -lgcrypt -lz -lpthread -lm -lcrypt -L/lib/x86_64-linux-gnu -lexpat -ludev
/usr/include/c++/4.7/ext/new_allocator.h:110: error: undefined reference to 'std::basic_string<unsigned short, base::string16_char_traits, std::allocator<unsigned short> >::basic_string(std::basic_string<unsigned short, base::string16_char_traits, std::allocator<unsigned short> >&&)'
/usr/include/c++/4.7/bits/stl_construct.h:77: error: undefined reference to 'std::basic_string<unsigned short, base::string16_char_traits, std::allocator<unsigned short> >::basic_string(std::basic_string<unsigned short, base::string16_char_traits, std::allocator<unsigned short> >&&)'
error: ld returned 1 exit status

La std::basic_string símbolo en mi gcc biblioteca de la siguiente manera:

$ find /usr -name libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.6/32/libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.7/32/libstdc++.a
/usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a
$ nm -C /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a| grep basic_string | grep '&&'
nm: compatibility-debug_list-2.o: no symbols
nm: compatibility-list-2.o: no symbols
nm: compatibility-parallel_list-2.o: no symbols
0000000000000000 W std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&)
0000000000000000 W std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::operator=(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&)
0000000000000000 W std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&)
0000000000000000 W std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&)
0000000000000000 n std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&)
0000000000000000 W std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string&&)
0000000000000000 W std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string&&)
0000000000000000 n std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string&&)

¿Cómo puedo solucionar este problema?

–EDIT–

Solucionar el problema después de que me quitaron -std=gnu++11 desde el comando compile. Parece que el Cromo de la base de la biblioteca de string16 es tener problema de compatibilidad con C++11.

  • basic_string es una plantilla. Q: ¿crear instancias de ella en cualquier lugar en su programa? ¿Cómo estás usando? Puede cortar y pegar un ejemplo de tu código?
  • Se parece a una amplia char problema (wchar_t se utiliza para la creación de instancias).
  • Sólo buscaba en mi código, no hay ninguna basic_string instanciado
  • Debe ser std::wstring, ha #include <string> ?
  • Hay definiciones de tipos para std::basic_string<T> para los distintos valores de T, por ejemplo, de cadena, wstring string16 (en c++11), se necesita buscar para ellos.
InformationsquelleAutor Deqing | 2013-07-05

1 Comentario

  1. 5

    Estás tratando de usar basic_string<unsigned short, base::string16_char_traits> pero que no proceden de la biblioteca estándar, el libstdc++.so sólo la biblioteca contiene basic_string<char> y basic_string<wchar_t>

    Que la especialización debe ser utilizado en una de las bibliotecas que se está usando, así que usted debe averiguar qué y asegurarse de que el enlace correctamente. Si estás compilando con -fno-implicit-templates entonces puede que tenga un explícito de la creación de instancias.

    Podría ayudar a buscar base::string16_char_traits donde encontrar el de la creación de instancias viene. Una rápida en Google sugiere que es de un Cromo de la biblioteca, así que tal vez usted no está de vinculación a que, o tal vez usted necesita para poner que la biblioteca más tarde en el comando link.

    • Gracias. De hecho, mi proyecto está basado en Chromium código. Entonces, ¿cómo puedo agregar esta biblioteca?
    • Parece que la biblioteca se llama base. Pero puedo ver que obj/base/libbase.a ya está incluido en el g++ enlazador de comandos.
    • «tal vez usted necesita para poner que la biblioteca más tarde en el enlace de comando.» – La biblioteca debe aparecer después de todos los objetos que dependen de él.

Dejar respuesta

Please enter your comment!
Please enter your name here