Respostas:
No projeto em que deseja #incluir o arquivo de cabeçalho de outro projeto, você precisará adicionar o caminho do arquivo de cabeçalho na seção Diretórios de inclusão adicionais na configuração do projeto.
Para acessar a configuração do projeto:
Para incluir o arquivo de cabeçalho , basta escrever o seguinte em seu código:
#include "filename.h"
Observe que você não precisa especificar o caminho aqui, porque você já inclui o diretório nos Diretórios de inclusão adicionais, então o Visual Studio saberá onde procurá-lo.
Se você não quiser adicionar todos os locais de arquivo de cabeçalho nas configurações do projeto, pode apenas incluir um diretório até um ponto e, em seguida, #include relativo a esse ponto:
// In project settings
Additional Include Directories ..\..\libroot
// In code
#include "lib1/lib1.h" // path is relative to libroot
#include "lib2/lib2.h" // path is relative to libroot
Se estiver usando bibliotecas estáticas (ou seja, arquivo .lib), você também precisará adicionar a biblioteca à entrada do vinculador, para que, no momento da ligação, os símbolos possam ser vinculados (caso contrário, você obterá um símbolo não resolvido):
#include "proj2\include.h"
. Ter vários projetos por solução parece muito direcionado para as linguagens NET, já que são usadas de forma muito diferente. No entanto, para encontrar uma ótima maneira de superar isso para projetos C ++.
#include
não tem nada a ver com projetos - apenas diz ao pré-processador "coloque o conteúdo do arquivo de cabeçalho aqui". Se você fornecer a ele um caminho que aponta para o local correto (pode ser um caminho relativo, como ../seu_arquivo.h), ele será incluído corretamente.
Você terá, no entanto, que aprender sobre bibliotecas (bibliotecas estáticas / dinâmicas) para fazer esses projetos vincularem corretamente - mas essa é outra questão.
Como os dois projetos estão na mesma solução, há uma maneira mais simples de incluir arquivos e vinculador, conforme descrito em https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp- projetos? view = vs-2019 :
#include "../libProject/libHeader.h"
).Você precisa definir o caminho para os cabeçalhos nas propriedades do projeto para que o compilador procure lá ao tentar encontrar o (s) arquivo (s) de cabeçalho. Não me lembro a localização exata, mas olhe nas propriedades do projeto e você verá.
Tente evitar referências de caminho completas na diretiva #include, sejam elas absolutas ou relativas. Em vez disso, adicione a localização da pasta de inclusão do outro projeto nas configurações do projeto. Use apenas subpastas nas referências de caminho quando necessário. Dessa forma, é mais fácil mover as coisas sem ter que atualizar seu código.
Expandindo a resposta de @Benav, minha abordagem preferida é:
$(SolutionDir)
aos diretórios de inclusão adicionaisAgora você pode incluir cabeçalhos de seus projetos referenciados como:
#include "OtherProject/Header.h"
Notas:
#include
s, mas define as dependências de compilação corretas, que você provavelmente deseja.