c++ - libreria - error fatal LNK1104: no se puede abrir el archivo ''libboost_system-vc110-mt-gd-1_51.lib''
descargar boost (9)
El parámetro C ++ → General → Incluir directorios adicionales es para listar directorios donde el compilador buscará archivos de encabezado.
Necesita decirle 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 en Propiedades → Enlazador → General → Directorios de biblioteca adicionales . Ingrese <boost_path>/stage/lib
aquí (esta es la ruta donde se encuentran las bibliotecas si compila Boost usando las opciones predeterminadas).
Parece que no puedo hacer que esto funcione. Hice una aplicación de consola simple (que depende de la biblioteca websocket++
) que necesita bibliotecas de Boost
... 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 lib en (boost_root)/stage/libs
y (boost_root)/stage/libs
la ruta a las librerías al compilador que 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 lugar, se llama libboost_system-vc110-mt-sgd-1_51.lib
.
¿Alguna idea?
En caso de que tenga problemas para generar un impulso o prefiera no hacerlo, una alternativa es descargar los archivos lib de SourceForge . El enlace lo llevará a una carpeta de archivos dll lib y dll para la versión 1.51. Sin embargo, debería poder editar el enlace para especificar la versión de elección. Aparentemente el instalador de BoostPro tiene algunos problemas.
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 que elija. Recomiendo c:/directory
.
- Abra su C ++ visual.
- Crea un nuevo proyecto
- Haga clic derecho en el proyecto.
- Haga clic en la propiedad.
- Haga clic en C / C ++.
- Haga clic en general.
- Seleccione biblioteca de inclusión adicional.
- Incluye el destino de la biblioteca. por ejemplo,
c:/boost_1_57_0
. - Haga clic en el encabezado del precompilador.
- Haga clic en crear / usar encabezado precompilado.
- Seleccione no usar encabezado precompilado.
Luego ve a la biblioteca de enlaces donde experimentaste tus problemas.
- Ir a donde el archivo extraído era
c:/boost_1_57_0
. - Haga clic en
booststrap.bat
(no se moleste en escribir en la ventana de comandos simplemente 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, labooststrap
se ejecutará y producirá el mismo archivo, pero ahora con dos nombres diferentes:b2
ybjam
. - Haz clic en
b2
y espera a que se ejecute. - Haga clic en
bjam
y espere a que se ejecute. Luego se producirá una carpeta llamadastage
. - Haga clic derecho en el proyecto.
- Haga clic en la propiedad.
- Haga clic en el enlazador.
- Haga clic en general.
- Haga clic en incluir directorio de biblioteca adicional.
- Seleccione la parte de la biblioteca, por ejemplo,
c:/boost_1_57_0/stage/lib
.
¡Y estás listo para ir!
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 me decía 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 intentando usar (y había creado) las bibliotecas dinámicas de refuerzo (.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).
Tuve el mismo problema informado aquí. Resolví el problema de mover mainTest.cpp desde una subcarpeta src / mainTest / a la carpeta principal src / Supongo que este también fue tu problema.
Tuve el mismo problema y mi error fue que había instalado el binario boost_1_55_0-msvc-11.0-32.exe para utilizar con visual c ++ 2010 que tiene la versión v100 (propiedades del proyecto-> Propiedades de configuración-> General-> plataformaTooset) 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.
Tuve un problema similar cuando traté de usar la prueba de la unidad de impulso en Visual Studio 2015 (Community Edition):
error fatal LNK1104: libboost_unit_test_framework-vc140-mt-1_57
así que pensé en compartir mi solución.
Puede crear un proyecto de prueba de unidad de impulso en de dos formas (y esta solución funciona para ambas):
- utilizando el Adaptador de prueba Boost Unit
- o creando una Aplicación de consola Win32 ( pasos aquí ) y sustituyendo la función principal con una función de prueba de la unidad de impulso ( pasos aquí ).
Estos son los pasos que seguí para que ambos proyectos funcionen:
Primero, descargue la versión de impulso deseada (por ejemplo, boost_1_57_0 ). Puede descargar boost con los binarios correctos (compilados utilizando msvc v140) o extraer los binarios usted mismo ejecutando los siguientes comandos desde la línea de comandos:
- bootstrap.bat
- "C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / VC / vcvarsall.bat" x86
- bjam --clean
- bjam -j4 --debug-symbols = on --build-type = conjunto de herramientas completo = msvc-14.0 threading = multi runtime-link = shared address-model = 32
Donde msvc-14.0 especifica que necesitamos la versión de Visual Studio 2015 (VS 2015 = v14.0 = v140), y address-model = 32 especifica que requerimos la plataforma 32 (pero lo mismo puede hacerse para 64 bit).
Una vez que tenga los archivos 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 haga las siguientes elecciones:
Establezca el " General> Platform Toolset " en Visual Studio 2015 (v140).
Incluya la ruta a la carpeta de impulso (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:
- " C / C ++> Directorio de inclusión adicional "
- y " Linker> Additional Library Directories ".
Yo tuve el mismo problema. Fue causado porque compilé Boost con Visual C ++ 2010 (v100) y traté de usar la biblioteca con Visual Studio 2012 (v110) por error.
Por lo tanto, cambié las configuraciones (en Visual Studio 2012) yendo a Propiedades del proyecto -> General -> Herramientas de plataforma y cambio el valor de Visual Studio 2012 (v110) a Visual Studio 2010 (v100) .
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 viejo proyecto heredado. Las bibliotecas no tenían el control de versiones VC o BOOST en sus nombres de archivo, por ejemplo: libboost_regex-mt-sgd.lib
, sin embargo Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
se activó de alguna manera automáticamente.
Se corrigió añadiendo manualmente el nombre de archivo no versionado a:
<AdditionalDependencies>$(DK_BOOST)/lib64/libboost_regex-mt-sgd.lib</AdditionalDependencies>
y ...vc120-mt-sgd-1_55.lib
lista negra el ...vc120-mt-sgd-1_55.lib
en
<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>