Parece que no puedo hacer que esto funcione. Hice una aplicación de consola simple (que depende de la websocket++
biblioteca) que necesita Boost
bibliotecas ... pero cuando intento compilar obtengo:
error fatal LNK1104: no se puede abrir el archivo 'libboost_system-vc110-mt-gd-1_51.lib'
Sin embargo, hice el bjam que creó la biblioteca y vinculé (boost_root)/stage/libs
la ruta de las bibliotecas al compilador C++/Additionnals includes
.
Si miro en (boost_root)/stage/libs
el archivo libboost_system-vc110-mt-gd-1_51.lib
no está allí. En su libboost_system-vc110-mt-sgd-1_51.lib
lugar se llama .
¿Alguna idea?
VS2012 developer command prompt
, vaya a su directorio raíz de impulso y escribabootstrap
, y luego escribab2
y debería obtener un conjunto completo de archivos de biblioteca./MD
?Respuestas:
El parámetro C ++ → General → Incluir directorios adicionales es para enumerar directorios donde el compilador buscará archivos de encabezado.
Debe indicarle al vinculador dónde buscar bibliotecas para vincular. Para acceder a esta configuración, haga clic con el botón derecho en el nombre del proyecto en la ventana del Explorador de soluciones , luego Propiedades → Vinculador → General → Directorios de bibliotecas adicionales . Ingresa
<boost_path>\stage\lib
aquí (esta es la ruta donde se encuentran las bibliotecas si creas Boost usando las opciones predeterminadas).fuente
Esta es la forma más sencilla para un aficionado como yo que está estudiando C ++ por su cuenta:
Primero descomprima la biblioteca de impulso en cualquier directorio de su elección. Recomiendo
c:\directory
.c:\boost_1_57_0
.Luego, vaya a la biblioteca de enlaces donde experimentó sus problemas.
c:\boost_1_57_0
.booststrap.bat
(no se moleste en escribir en la ventana de comandos, solo espere y no cierre la ventana que es el lugar donde tuve mi problema que me tomó dos semanas resolver. Después de un tiempo,booststrap
se ejecutará y producirá el mismo archivo, pero ahora con dos nombres diferentes:,b2
ybjam
.b2
y espere a que se ejecute.bjam
y espere a que se ejecute. Entonces se producirá una carpeta llamadastage
.c:\boost_1_57_0\stage\lib
.¡Y listo!
fuente
bootstrap.bat
(tomó 10-20 segundos); d) escriba./b2
según las instrucciones (luego tardó entre 30 y 40 minutos en completarse).Yo tuve el mismo problema. Fue causado porque compilé el Boost con Visual C ++ 2010 (v100) e intenté usar la biblioteca con Visual Studio 2012 (v110) por error.
Entonces, cambié las configuraciones (en Visual Studio 2012) yendo a Propiedades del proyecto -> General -> Plataform Toolset y cambié el valor de Visual Studio 2012 (v110) a Visual Studio 2010 (v100) .
fuente
Otra solución más:
Estaba perplejo porque estaba incluyendo boost_regex-vc120-mt-gd-1_58.lib en mi propiedad Link-> Additional Dependencies, pero el enlace seguía diciéndome que no podía abrir libboost_regex-vc120-mt-gd-1_58.lib ( tenga en cuenta el prefijo lib). No especifiqué libboost_regex-vc120-mt-gd-1_58.lib.
Estaba tratando de usar (y había construido) las bibliotecas dinámicas de impulso (.dlls) pero no tenía definida la macro BOOST_ALL_DYN_LINK. Aparentemente, hay sugerencias en la compilación para incluir una biblioteca, y sin BOOST_ALL_DYN_LINK busca la biblioteca estática (con el prefijo lib), no la biblioteca dinámica (sin un prefijo lib).
fuente
Tuve el mismo problema y mi error fue que había instalado el binario boost_1_55_0-msvc-11.0-32.exe para usar con visual c ++ 2010 que tiene la versión v100 (propiedades del proyecto-> ConfiguratioProperties-> General-> platformTooset) no v110 como visual c ++ 2012. Así que descargué boost_1_55_0-msvc-10.0-32.exe y ahora todo está bien hasta ahora.
fuente
En caso de que tenga problemas para crear boost o prefiera no hacerlo, una alternativa es descargar los archivos lib de SourceForge . El enlace lo llevará a una carpeta de archivos lib y dll comprimidos para la versión 1.51. Sin embargo, debería poder editar el enlace para especificar la versión de su elección. Aparentemente, el instalador de BoostPro tiene algunos problemas.
fuente
Tuve un problema similar al intentar usar las pruebas unitarias de impulso en Visual Studio 2015 (Community Edition):
así que pensé en compartir mi solución.
Puede crear un proyecto de prueba de unidad de impulso de dos maneras (y esta solución funciona para ambas):
Estos son los pasos que seguí para que ambos proyectos funcionen:
Primero, descargue la versión de refuerzo deseada (por ejemplo, boost_1_57_0 ). Puede descargar boost con los binarios correctos (compilados con msvc v140) o extraer los binarios usted mismo ejecutando los siguientes comandos desde la línea de comandos:
Donde msvc-14.0 especifica que requerimos la versión de Visual Studio 2015 (VS 2015 = v14.0 = v140), y address-model = 32 especifica que requerimos la plataforma 32 (pero se puede hacer lo mismo para 64 bits).
Una vez que tenga los binarios, vaya a Visual Studio, seleccione el proyecto Boost Unit Testing que ha creado. Vaya a Propiedades del proyecto> configuración (desde el menú principal) y elija las siguientes opciones:
Establezca " General> Conjunto de herramientas de plataforma " en Visual Studio 2015 (v140).
Incluya la ruta a la carpeta boost (por ejemplo, C: \ boost_1_57_0) y la ruta a la subcarpeta que contiene los archivos binarios (por ejemplo, C: \ boost_1_57_0 \ stage \ lib) en:
fuente
b2 -j% cores% toolset =% msvcver% address-model = 64 architecture = x86 link = static threading = multi runtime-link = shared --build-type = minimal stage --stagedir = stage / x64
Propiedades → Vinculador → General → Directorios de bibliotecas adicionales $ (BOOST) \ stage \ x64 \ lib
fuente
Tuve el mismo problema reportado aquí. Resolví el problema moviendo mainTest.cpp de una subcarpeta src / mainTest / a la carpeta principal src / Supongo que este también era tu problema.
fuente
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
En mi caso, bootstrap / bjam no estaba disponible (las bibliotecas fueron precompiladas y comprometidas con SCM) en el antiguo proyecto heredado. Las bibliotecas no tenían versiones VC o BOOST en sus nombres de archivo, por ejemplo:,
libboost_regex-mt-sgd.lib
sin embargo, deProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
alguna manera se activaban automáticamente.Se corrigió agregando manualmente el nombre de archivo no versionado a:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
y poner
...vc120-mt-sgd-1_55.lib
en lista negra a los<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
fuente