Pergunta

Vou tentar explicar brevemente o que eu quero fazer:

Um projeto usando uma biblioteca estática que ter outro como depandency. É produzir um projeto chamado MyProject ligando em MyLib1 ligando em MyLib2. Aqui está a ordem de compilação:

  • MyLib2
  • MyLib1 (ligando para MyLib2)
  • MyProject (ligando para MyLib1)

Estou usando o Visual Studio 2008 e eu tenho alguns problemas na definição de incluir. Na ligação, eu uso a propriedade "Incluir adicionais Directory" (em projecto imobiliário C nó / C ++). Isto parece trabalhar entre MyProject e MyLib1 mas não MyLib1 e MyLib2. Por Exemplo: Eu tenho um arquivo em MyLib2 chamados foo.cpp; Usando #include "foo.cpp" faz revelador visual studio que foo.cpp é desconhecida (faltando arquivo ou pasta).

Para garantir que não é um caminho errado que eu dei, eu fiz muitas tentativas como seguir: copiar e colar o caminho mostrado na linha de comando (usado para compilar a biblioteca) na vitória explorador: Eu bem ver o código fonte da minha segunda biblioteca. Eu tenho refazer o projeto muitas vezes e cada vezes eu usei nomes diferentes (obrigando-me a prestar atenção a este) e tudo parece bem definido (mas não "incluindo").

A única maneira que eu realmente encontrar para fazer isso funciona: usando #include "c: \\ foo.cpp"! como incluir ... Muito bom para portabilidade

Aqui é um postal da solução para testá-lo sozinho e me diga o que está errado: MyProject.rar

Obrigado por tomar algum tempo para me ajudar! Lucyberad

Foi útil?

Solução

Primeiro, nunca incluem arquivos .cpp *.

Em segundo lugar, usar a declaração para a frente de suas funções externas:

void appellib2(void);

void appellib1(void)
{
    appellib2();
}

Em terceiro lugar, clique direito do mouse cada projeto no Solution Explorer, e selecione "dependências do projeto ..." e set-up dependências adequadas:. MyProject -> MyLib1 -> MyLib2

Por fim, em propriedades para MyProject, configurar dependências adicionais MyLib1.lib.

Agora eu posso construir e executar o seu projeto sem erros.

Atualizar

Nunca renomear * .cpp para * .h apenas para resolver ligando problemas. Se você tem uma definição em seu arquivo .h * você vai conseguir incluí-lo duas vezes ou mais.

Aqui é o seu projeto YourProject.rar .

Outras dicas

Eu mudei .cpp para .h. Eu sei que eu nunca incluir um arquivo CPP mas foi para testar propósito.

Eu adicionei protótipo de cada função, mas ele não funciona melhor (não incluem o mylib2.cpp arquivo, o protótipo é melhor, mas não útil neste teste).

Eu configurar dependências do projeto. Ele ainda falhar.

Eu configurar dependências adicionais MyLib1.lib para MyProject (acho que isso era o próximo erro que eu seria capaz de encontrar, produzindo um ligando um erro).

Com teses modificações, eu ainda tenho incluem mylib2.h erro: não existe tal arquivo ou diretório

.

Aqui está o novo arquivo: MyProject.rar

Se você chegar a fazê-lo funcionar, você pode me fazer um arquivo da solução de trabalho?

Obrigado, Lucyberad.

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