53 votes

C++ #include <atlbase.h> n'est pas trouvé

Quand je compile mon programme C++ dans Visual Studio Express, il dit qu'il ne peut pas trouver atlbase.h . Est-ce qu'il me manque un SDK ou quelque chose ?

3voto

Froggy Points 73

Situation

Avec Visual Studio 2017 Community Edition, nous avons installé " Visual C++ ATL support " et le support MFC et ATL. L'erreur s'est tout de même produite dans notre projet x64.

Solution

Nous avons corrigé certains chemins avec les deux commandes suivantes :

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d amd64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64

Détails

Nous avons finalement trouvé l'en-tête atlbase.h en C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\include . Ce chemin d'accès n'a tout simplement pas été ajouté au répertoire VC Include par l'utilisateur. vsvars32.bat L'en-tête n'a donc pas été trouvé pendant la construction.

vsvars32.bat comprend la ligne suivante :

@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%`.

Cela a permis de C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include dans notre machine.

Nous avons créé une jonction de répertoire, ainsi l'outil de construction trouve atlbase.h dans le répertoire attendu (c'est la première commande de la section Solution ci-dessus) :

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"

Après, le linker n'a pas trouvé atls.lib (voir Impossible d'ouvrir le fichier atls.lib ). Cela était dû au fait que la structure de fichier attendue était la suivante lib devrait contenir directement la version x86 des librairies et lib\amd64 doit contenir les variantes x64. Au lieu de cela, lib\x86 contenait les versions x86 et lib\x64 contenait les versions 64 bits. Comme nous construisons un projet 64 bits, la création d'un autre répertoire junk de amd64 à x64 a résolu le problème :

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d amd64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64

2voto

Drew Dormann Points 25025

Cet en-tête semble faire partie de l'en-tête SDK pour la plate-forme Windows .

Vous devriez rechercher le fichier dans votre ordinateur. Cela vous dira si vous l'avez manqué.

1voto

user2117423 Points 11

J'ai eu le même problème avec l'exemple de projet. J'ai spécifié les propriétés du projet exemple et le projet exemple s'est compilé avec succès.

Visual Studio 8
Pour l'en-tête
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include

Para .lib fichier
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X