Parece que não consigo fazer isso funcionar. Fiz um aplicativo de console simples (que depende de websocket++
biblioteca) que precisa de Boost
bibliotecas .. mas quando tento compilar, obtenho:
erro fatal LNK1104: não é possível abrir o arquivo 'libboost_system-vc110-mt-gd-1_51.lib'
No entanto, fiz o bjam que criou a lib no (boost_root)/stage/libs
e vinculei o caminho das libs ao compilador C++/Additionnals includes
.
Se eu olhar no (boost_root)/stage/libs
arquivo libboost_system-vc110-mt-gd-1_51.lib
não está lá. Em libboost_system-vc110-mt-sgd-1_51.lib
vez disso, é chamado .
Qualquer ideia?
VS2012 developer command prompt
, vá para o diretório raiz boost e digitebootstrap
, e então digiteb2
e você deve obter um conjunto completo de arquivos de biblioteca./MD
?Respostas:
O parâmetro C ++ → Geral → Diretórios de inclusão adicionais é para listar os diretórios onde o compilador irá procurar por arquivos de cabeçalho.
Você precisa dizer ao vinculador onde procurar bibliotecas para vincular. Para acessar esta configuração, clique com o botão direito do mouse no nome do projeto na janela do Solution Explorer , em seguida, Propriedades → Linker → Geral → Diretórios de biblioteca adicionais . Digite
<boost_path>\stage\lib
aqui (este é o caminho onde as bibliotecas estão localizadas se você construir o Boost usando as opções padrão).fonte
Esta é a maneira mais simples para um amador como eu que está estudando C ++ por conta própria:
Primeiro descompacte a biblioteca boost para qualquer diretório de sua escolha. Eu recomendo
c:\directory
.c:\boost_1_57_0
.Em seguida, vá para a biblioteca de links onde você teve seus problemas.
c:\boost_1_57_0
.booststrap.bat
(não se preocupe em digitar na janela de comando apenas espere e não feche a janela que é o local onde tive meu problema que levei duas semanas para resolver. Depois de um tempo, obooststrap
será executado e produzirá o mesmo arquivo, mas agora com dois nomes diferentes:b2
ebjam
.b2
e espere para executar.bjam
e espere para executar. Em seguida, uma pasta será chamada de produçãostage
.c:\boost_1_57_0\stage\lib
.E você está pronto para ir!
fonte
bootstrap.bat
(demorou 10-20 segundos); d) digite./b2
conforme as instruções (demorava 30-40 minutos para ser concluído).Eu tive o mesmo problema. Isso foi causado porque compilei o Boost com o Visual C ++ 2010 (v100) e tentei usar a biblioteca com o Visual Studio 2012 (v110) por engano.
Então, mudei as configurações (no Visual Studio 2012) indo para Propriedades do projeto -> Geral -> Conjunto de ferramentas da plataforma e alterei o valor do Visual Studio 2012 (v110) para o Visual Studio 2010 (v100) .
fonte
Mais uma solução:
Fiquei perplexo porque estava incluindo boost_regex-vc120-mt-gd-1_58.lib em minha propriedade Link-> Dependências Adicionais, mas o link dizia que não conseguia abrir libboost_regex-vc120-mt-gd-1_58.lib ( observe o prefixo lib). Eu não especifiquei libboost_regex-vc120-mt-gd-1_58.lib.
Eu estava tentando usar (e tinha construído) as bibliotecas dinâmicas de impulso (.dlls), mas não tinha a macro BOOST_ALL_DYN_LINK definida. Aparentemente, há dicas na compilação para incluir uma biblioteca, e sem BOOST_ALL_DYN_LINK ele procura a biblioteca estática (com o prefixo lib), não a biblioteca dinâmica (sem um prefixo lib).
fonte
Tive o mesmo problema e meu erro foi ter instalado o binário boost_1_55_0-msvc-11.0-32.exe para usar com o visual c ++ 2010 que tem a versão v100 (propriedades do projeto-> ConfiguratioProperties-> Geral-> platformTooset) não v110 como visual c ++ 2012. Então baixei boost_1_55_0-msvc-10.0-32.exe e agora está tudo ok até agora.
fonte
Caso você tenha problemas para criar boost ou prefira não fazer isso, uma alternativa é baixar os arquivos lib do SourceForge . O link o levará a uma pasta de arquivos lib e dll compactados para a versão 1.51. Porém, você deve ser capaz de editar o link para especificar a versão de sua escolha. Aparentemente, o instalador do BoostPro tem alguns problemas.
fonte
Tive um problema semelhante ao tentar usar o teste de unidade de impulso no Visual Studio 2015 (Community Edition):
então pensei em compartilhar minha solução.
Você pode criar um projeto de teste de unidade de impulso de duas maneiras (e esta solução funciona para ambas):
Aqui estão as etapas que segui para fazer os dois projetos funcionarem:
Primeiro, baixe a versão boost desejada (por exemplo, boost_1_57_0 ). Você pode baixar o boost com os binários corretos (compilados usando msvc v140) ou extrair os binários você mesmo executando os seguintes comandos na linha de comando:
Onde msvc-14.0 especifica que exigimos a versão do Visual Studio 2015 (VS 2015 = v14.0 = v140) e address-model = 32 especifica que exigimos a plataforma 32 (mas o mesmo pode ser feito para 64 bits).
Depois de ter os binários, vá para o Visual Studio, selecione o projeto Boost Unit Testing que você criou. Acesse Propriedades do projeto> configuração (no menu principal) e faça as seguintes escolhas:
Defina " Geral> Conjunto de ferramentas da plataforma " para Visual Studio 2015 (v140).
Inclua o caminho para a pasta boost (por exemplo, C: \ boost_1_57_0) e o caminho para a subpasta contendo os arquivos binários (por exemplo, C: \ boost_1_57_0 \ stage \ lib) em:
fonte
b2 -j% cores% toolset =% msvcver% address-model = 64 arquitetura = x86 link = static threading = multi runtime-link = compartilhado --build-type = mínimo stage --stagedir = stage / x64
Propriedades → Linker → Geral → Diretórios de biblioteca adicionais $ (BOOST) \ stage \ x64 \ lib
fonte
Eu tive o mesmo problema relatado aqui. Resolvi o problema ao mover mainTest.cpp de uma subpasta src / mainTest / para a pasta principal src / Acho que esse também era o seu problema.
fonte
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
No meu caso, bootstrap / bjam não estava disponível (bibliotecas foram pré-compiladas e comprometidas com SCM) no antigo projeto herdado. As bibliotecas não tinham controle de versão VC ou BOOST em seus nomes de arquivo, por exemplo:, no
libboost_regex-mt-sgd.lib
entanto,Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
era de alguma forma acionado automaticamente.Corrigido adicionando manualmente o nome do arquivo sem versão a:
e na lista negra do
...vc120-mt-sgd-1_55.lib
nofonte