Ситуация
В Visual Studio 2017 Community Edition мы установили «поддержку Visual C ++ ATL» и поддержку MFC и ATL.Ошибка все еще произошла в нашем проекте x64.
Решение
Мы исправили некоторые пути с помощью следующих двух команд:
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
Подробности
Мы в конечном итогенашел заголовок atlbase.h
в C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\include
.Этот путь просто не был добавлен в каталог VC Include с помощью vsvars32.bat
, поэтому заголовок не был найден при сборке.
vsvars32.bat содержит следующую строку:
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%`.
Это решенона C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
на нашем компьютере.
Мы создали соединение каталогов, поэтому инструмент сборки находит atlbase.h
в ожидаемом каталоге (это первая команда из приведенного выше раздела «Решение»):
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"
После этого компоновщик не нашел atls.lib
(см. Невозможно открыть файл atls.lib ).Это произошло из-за ожидаемой структуры файла: lib
должен содержать версию libs для x86, а lib\amd64
должен содержать варианты x64.Вместо этого lib\x86
содержал версии x86, а lib\x64
содержал 64-разрядные версии.Поскольку мы строим 64-битный проект, создание другого мусорного каталога из amd64 в x64 решило проблему:
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