Visual Studio 2010 não autolinking bibliotecas estáticas de projetos que são dependencies como deveria ser suposto

  • Criar uma nova solução com um projeto de linha de comando do console C ++
  • Criar um novo projeto, uma biblioteca estática do C ++
  • Faça o projeto da linha de comando depender da biblioteca
  • Certifique-se de que “Dependências da biblioteca de links” esteja ativado em Configuração => Linker => Geral (por padrão)
  • O Visual Studio ainda não vincula a biblioteca.

Como posso consertar isso? Funcionou no Visual Studio 2008.

Isso ainda funciona, mas foi alterado no VS 2010:

“Com o VS2010, paramos de suportar dependencies de projeto definindo referências implícitas e também introduzimos uma nova maneira de definir dependencies de projeto no nível do projeto. Como uma referência de projeto e uma dependência de projeto são conceitos próximos, ambos aplicados a um projeto, fazia sentido tê-los representados juntos, de forma consistente, no arquivo de projeto.Como você verá nos trechos abaixo, a única diferença entre uma definição de referência de projeto e uma definição de dependência de projeto consiste em metadados que definem a inclusão / exclusão de assembly de saída em / da linha de comando do link do projeto principal.Embora não tenhamos removido a checkbox de diálogo “Dependências do Projeto”, recomendamos definir novas dependencies do projeto através da checkbox de diálogo “Framework and References” .Você precisa definir a propriedade “Reference Assembly Output” na página de propriedades UI para false para uma dependência de projeto e para true para uma referência de projeto. ”

Basta clicar com o botão direito do mouse no projeto do console, selecionar “Propriedades-> Propriedades Comuns-> Estrutura e Referências-> Incluir Nova Referência” e include o projeto da biblioteca estática; verifique também se “Dependências da biblioteca de links” é True no lado direito. Parece trabalhar para depurar e liberar compilações. Você aprende algo novo a cada dia. 😉

Eles mudaram a interface do usuário para adicionar dependencies do projeto C ++ no VS2010, mas curiosamente, sem remover a interface antiga, ou de alguma forma indicando que não funciona mais.

Para criar a dependência no VS2010, você precisa usar “Add New Reference” (pode ser encontrado nas propriedades do projeto), e talvez também no menu do botão direito do projeto (não tem VS aqui para verificar)

A velha checkbox de diálogo “Dependências do Projeto” está basicamente quebrada agora.

Para o MSVC 14 (versão 2015), clique com o botão direito do mouse no projeto e, em seguida, em "Add->Reference..." e verifique todas as dependencies necessárias.

Sim, mudou em algum lugar entre as versões de 2010 e 2015. Diversão!

E se você estiver procurando vincular um projeto que tenha resources – você precisará especificar o arquivo .res diretamente na lista de dependencies de input do vinculador (checkbox de diálogo de propriedades do projeto), pois ele não é atendido pela configuração acima.

ATUALIZAR

Ainda o mesmo (novo) comportamento no MSVC 2017

Eu acredito que a interface do usuário antiga (dependencies) afeta a ordem de compilation do Visual Studio, ao criar a partir do IDE, para obter informações. O novo sistema de configuração do projeto incorpora as referências em cada arquivo de projeto para que você possa construir de fora do IDE (enquanto nas versões anteriores, você não podia, porque não obteria vinculação automática para dependencies, pois dependencies eram feitas apenas no nível da solução ).

Existem também alguns problemas com projetos mais complexos no novo sistema; Especificamente, todos os projetos binários resultantes precisam ter referências explícitas para cada biblioteca dependente para construir corretamente, enquanto anteriormente eles poderiam ser efetivamente herdados de outras bibliotecas dependentes. Mesma causa subjacente, no entanto.

Intereting Posts