Pergunta

Eu tenho um projeto que usa C ++/CLI para implementar uma GUI e algum processamento em segundo plano para conversar com um sensor. Eu tenho tudo o que está funcionando e muitas das coisas da comunidade que usamos para comunicar o sensor em um .dll. O problema é que eu gostaria de combinar a biblioteca no principal executável para evitar ter que se preocupar em distribuir .dlls.

Eu tenho um projeto de demonstração que funciona bem usando um .lib, mas quando tento mudar o corpo do código Mani para produzir um .lib em vez de .dll, recebo o seguinte erro:

1>------ Build started: Project: MyTool, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>.\stdafx.cpp : fatal error C1113: #using failed on 'c:\projects\MyTool\debug\MyLib.lib'

Um pouco de Google Sugere que isso acontece quando você não é aplicado o Switch MSIL, mas definitivamente está lá no projeto da biblioteca.

Eu tenho uma mistura de código gerenciado e não gerenciado no meu projeto de demonstração e na coisa real, então estou realmente lutando para ver qual é o problema aqui.

Quaisquer sugestões seriam recebidas com muita gratidão!

Foi útil?

Solução

Estou supondo um pouco, mas suspeito que o projeto "MyTool" tenha o projeto "Mylib" como uma de suas "referências" ("Projeto" Menu >> Propriedades >> Propriedades comuns >> Referências).

Quando você altera o tipo de projeto mylib para uma lib em vez de uma DLL, você precisa remover o "mylib" das referências do projeto. Em seguida, você atualiza as dependências do projeto da solução (Menu "Projeto" >> "Dependências do projeto ...") para que o MyTool dependa do mylib.

Outras dicas

Eu também encontrei isso. A razão pela qual estava falhando foi porque eu estava compilando minha DLL nativa/gerenciada C ++ para segmentar .NET 4.0. E a DLL que eu estava #Using era uma DLL .NET 2.0. Como tal, estava falhando, mesmo que os caminhos e nomes de arquivos alinhados perfeitamente. Nesse caso, a mensagem de erro não ajudou absolutamente nenhuma ajuda. Eu o resolvo atualizando a DLL independente para .NET 4.0. Para que ambos os conjuntos estavam usando a mesma estrutura .NET.

Se você estiver vinculando a um modo misto (gerenciado/nativo) DLL, poderá obter esse erro. O que você não deve se o projeto usa CLR, mesmo que um dos arquivos de origem não. Mas, de qualquer forma, se for esse o caso, tente remover a referência do Projeto | Propriedades | Propriedades comuns | Referências e depois novamente.

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