Cuando estoy usando Qt (v4.7.4) y Boost (intenté v1.47 y v1.48) juntos en mi proyecto de C++, obtengo un error de enlazador causado por una clase que incluye <boost\filesystem.hpp>
. Acabo de configurar Qt y antes de que el código funcionara sin problemas.error de vinculador al usar Qt y Boost
Este es el mensaje de error:
... obj: error LNK2001: símbolo externo sin resolver "privada: clase estática const std :: codecvt * & __cdecl impulso :: filesystem3 :: :: ruta wchar_t_codecvt_facet (void) "(wchar_t_codecvt_facet @ ruta @ @ filesystem3 impulso @@ CAAAPBV $ codecvt @ @ GDH std @@ XZ)
... obj:?? error LNK2001: símbolo externo sin resolver" vacío __cdecl boost :: :: filesystem3 path_traits :: convert (char const *, char const *, clase std :: basic_string, clase std :: allocator> &, clase std :: codecvt const &) "(? convert @ p ath_traits @ filesystem3 @ boost @@ YAXPBD0AAV? $ basic_string @ GU? $ char_traits @ G @ std @@ V? $ allocator @ G @ 2 @@ std @@ ABV? $ codecvt @ GDH @ 5 @@ Z)
... obj: error LNK2001: símbolo externo no resuelto "void __cdecl boost :: filesystem3 :: path_traits :: dispatch (clase boost :: filesystem3 :: directory_entry const &, clase std :: basic_string, clase std :: allocator> & , class std :: codecvt const &) "(? dispatch @ path_traits @ filesystem3 @ boost @@ YAXABVdirectory_entry @ 23 @ AAV? $ basic_string @ GU? $ char_traits @ G @ std @@ V? $ allocator @ G @ 2 @@ std @@ ABV? $ codecvt @ GDH @ 6 @@ Z)
... obj: error LNK2001: símbolo externo no resuelto "void __cdecl boost :: filesystem3 :: path_traits :: convert (unsigned short const *, unsigned) estafa corta st *, clase std :: basic_string, clase std :: allocator> &, clase std :: codecvt const &) "(? convert @ path_traits @ filesystem3 @ boost @@ YAXPBG0AAV? $ basic_string @ DU? $ char_traits @ D @ std @@ V $ asignador @ D @ 2 @@ @@ std ABV $ codecvt @ @ 5 GDH @@ Z)
... exe:?? error grave LNK1120: 4 externos sin resolver
EDIT:
Here he encontrado a alguien que tenga este problema llegar a esta conclusión:
esto realmente es un problema de Qt. Usando wchar_t como tipo nativo, tiene que recompilar Qt usando el mismo interruptor de compilador. Incluso hay un error en el perseguidor: https://bugreports.qt.io/browse/QTBUG-9617
En general, usted tiene que ser muy cuidadoso y no mezclar wchar_t configuración del compilador en sus proyectos, ya que llegarán a ser incompatibles.
Así que volví a compilar la configuración de Qt /Zc:wchar_t
, pero no mostró ningún efecto. Todavía recibo el mismo error.
has compilado boost? No estoy muy familiarizado con lo que exactamente se necesita construir, pero algunas bibliotecas sí. – pezcode
sí. Lo he compilado para Visual Studio 2010 usando 'b2.exe' si no recuerdo mal. – Pedro
podría ser necesario volver a compilar toda la biblioteca de impulso? No recuerdo la configuración de compilación exacta, pero definitivamente no cambié la propiedad 'treat wchar_t as build-in type' cuando estaba compilando boost. – Pedro