Pergunta

Eu baixei a fonte para Launchy e estou tentando construí-lo no Visual Studio 2005. O projecto Launchy é construído usando VC7 então eu tive que atualizar os arquivos de projeto para VC8 e esse processo parecia ir bem. No entanto, Launchy também usa o impulso 1.33.1 libs eo que eu construí é o impulso 1.41.0 libs ( adereços para impulsionar para fazer as bibliotecas mais recentes muito mais fácil construir), então eu também atualizou o projeto para apontar para os meus novos libs impulso instalar. Agora eu recebo o seguinte erro vinculador:

fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib'

Eu tinha um olhar no diretório impulso lib e a correspondência mais próxima que eu poderia encontrar é ...

libboost_regex-vc80-mt-gd-1_41.lib

Observe a falta 'S'. Eu não entendo o que a diferença de libs é, e se Visual Studio está procurando a coisa errada ou o meu processo de criação impulso não conseguiu construir as bibliotecas certas. Alguém pode me apontar na direção certa?

Como uma experiência, eu fiz uma cópia do lib regex que eu tenho e rebatizou-o que o ligador está procurando. Isso me dá uma longa lista de erros vinculador sobre símbolos já estão sendo definidos no Msvcrtd.lib, tais como o seguinte:

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in libcmtd.lib(typinfo.obj)

Vou tentar construir o impulso 1.33.1 libs e aponto meu arquivo de projeto Launchy naquele lugar. Mas eu ainda gostaria de saber o que está errado com o meu impulso 1.41.0 libs.

Editar : Eu encontrei uma referência no impulso docs para o que o 's' libs são:

Use esta biblioteca ao vincular estaticamente para a biblioteca C ++ e tempo de execução do compilador bibliotecas de apoio padrão.

Portanto, parece que o 's' libs são os corretos. Agora eu só tenho que descobrir como construí-los.

Solução :. Eu era capaz de construir os desaparecidos impulso libs com a seguinte linha de comando

bjam --build-type=complete msvc stage

Eu corri que, depois de já em execução boostrap.bat na dir onde impulsionar vidas.

Foi útil?

Solução

A diferença é href="http://www.boost.org/doc/libs/1_41_0/more/getting_started/windows.html#library-naming" claramente descrito no docs impulso - "mt-SGD" significa "depuração, bibliotecas de tempo de execução, de vários segmentos, com símbolos de depuração estaticamente ligado". "Mt-gd" é o mesmo, mas usando bibliotecas de execução ligadas dinamicamente (ou seja Msvcrtd.lib vez de LIBCMTD.LIB).

De qualquer configurações do projeto a mudança de usar CRT dinâmica ligando (ou seja, / MDd em vez de / DMT), ou aumentar compilação usando vinculação estática -. Misturando aqueles que não funcionará corretamente

Outras dicas

O comando que você usar para aumentar construir? tentar especificar build-type = completa. Normalmente ele deve construir as s libs também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top