Включить ошибку Windows h
Обновлено: 21.11.2024
Привет. у меня проблема с использованием некоторых расширений C/C++ в vscode. это дает ошибку, как указано выше.
Моя версия MacOS Catalina — 10.15.2, а версия VsCode — Версия: 1.38.1. у меня есть аналогичная ошибка с другим расширением заголовка, таким как conio.h и MMsystem.h и т. д. я установил mingw-w64, а также выполнил установку vcpkg, как было предложено vscode, но ошибка все еще существует - . любое предложение было бы здорово. заранее спасибо "^^"
Текст был успешно обновлен, но возникли следующие ошибки:
В текущем состоянии отчет о проблеме недействителен
прокомментировал gyurmey 17 ноября 2021 г.
Привет, @gyurmey. Правильно ли я понимаю, что вы работаете на MacOS, но установили MinGW для работы с Windows? Если это так, я полагаю, что вам также потребуется установить/распаковать Windows 10 SDK, чтобы получить файлы заголовков, на которые вы ссылаетесь.
Спасибо @Colengms за ответ. Я пытался извлечь Windows 10 SDK или найти способ использовать его в MacOS, но не нашел решения или исполняемых файлов для MacOS. есть ли другой способ или расширение vscode, которые включают заголовки? спасибо ^^
Colengms прокомментировал 17 ноября 2021 г.
Привет, @gyurmey. Как вы установили MinGW? Похоже, пакеты MinGW должны включать заголовки Windows. В Ubuntu Linux файл windows.h находится в следующих пакетах:
прокомментировал gyurmey 17 ноября 2021 г.
Привет, @gyurmey. Как вы установили MinGW? Похоже, пакеты MinGW должны включать заголовки Windows. В Ubuntu Linux файл windows.h находится в следующих пакетах:
Еще раз спасибо за ответ @Colengms .. я использовал команду brew install mingw-w64 . Я пытался найти путь для mingw, но не смог его найти. Я попытался переустановить, но выдает предупреждение, что он уже установлен.
Colengms прокомментировал 17 ноября 2021 г.
Я проделал описанное выше, используя Big Sur, но я подозреваю, что процесс такой же или похожий для Catalina.
Достаточно ли приведенной выше информации для решения проблемы?
прокомментировал gyurmey 17 ноября 2021 г.
Colengms прокомментировал 18 ноября 2021 г.
но когда я запускаю файл C/C++ в vscode, он все равно выдает ту же ошибку на терминале
Не могли бы вы уточнить, что вы подразумеваете под "запустить файл C/C++"? Вы имеете в виду запуск определенной командной строки в терминале, использование Build and Debug Active File , нажатие F5 ( Debug: Start Debugging ), нажатие Run and Debug или что-то еще? :)
Значения конфигурации в c_cpp_properties.json используются для настройки IntelliSense (загогулины, раскрашивание и т. д.) и не используются непосредственно для компиляции исходных кодов. Расширение C/C++ отделено от различных систем сборки (таких как Make или CMake), которые могут использоваться для компиляции исходных кодов (хотя в некоторой степени может быть связано с ними).
Если вы ранее использовали одну из различных функций для сборки/запуска/отладки одного исходного файла, файлы tasks.json и/или launch.json, скорее всего, были созданы в первый раз и сохранялись, и в них могут потребоваться исправления. Однако, поскольку вы работаете в macOS, а MinGW создает исполняемые файлы для Windows, я предполагаю, что вы не сможете запустить программу непосредственно из VS Code.
прокомментировал gyurmey 18 ноября 2021 г.
но когда я запускаю файл C/C++ в vscode, он все равно выдает ту же ошибку на терминале
Не могли бы вы уточнить, что вы подразумеваете под "запустить файл C/C++"? Вы имеете в виду запуск определенной командной строки в терминале, использование Build and Debug Active File , нажатие F5 ( Debug: Start Debugging ), нажатие Run and Debug или что-то еще? :)
Значения конфигурации в c_cpp_properties.json используются для настройки IntelliSense (загогулины, раскрашивание и т. д.) и не используются непосредственно для компиляции исходных кодов. Расширение C/C++ отделено от различных систем сборки (таких как Make или CMake), которые могут использоваться для компиляции исходных кодов (хотя в некоторой степени может быть связано с ними).
Если вы ранее использовали одну из различных функций для сборки/запуска/отладки одного исходного файла, файлы tasks.json и/или launch.json, скорее всего, были созданы в первый раз и сохранялись, и в них могут потребоваться исправления. Однако, поскольку вы работаете в macOS, а MinGW создает исполняемые файлы для Windows, я предполагаю, что вы не сможете запустить программу непосредственно из VS Code.
Спасибо @Colengms за ответ. Я пробовал запускать как из команды Build, так и из команды Debug Active File, а также из вкладки запуска vscode. у меня есть task.json и launch.json. я думаю, что windows.h не поддерживается в MacOS с использованием vscode. я также пробовал в Linux Ubuntu, и я сделал ту же процедуру, но получил ту же ошибку. Возможно, это поддерживается только в самом окне, но, к сожалению, проверить не удалось ^^ .
Colengms прокомментировал 18 ноября 2021 г.
Привет, @gyurmey. MinGW расшифровывается как «Минималистский GNU для Windows».У вас должна быть возможность (кросс-)компилировать с MinGW, но вы не сможете запустить созданную вами программу на macOS или Linux. Программа, которую он генерирует, будет работать только на ПК с Windows. Если вы хотите создать приложение для macOS или Linux, я бы посоветовал использовать встроенные версии clang или gcc для этих платформ.
прокомментировал gyurmey 18 ноября 2021 г.
Привет, @gyurmey. MinGW расшифровывается как «Минималистский GNU для Windows». У вас должна быть возможность (кросс-)компилировать с MinGW, но вы не сможете запустить созданную вами программу на macOS или Linux. Программа, которую он генерирует, будет работать только на ПК с Windows. Если вы хотите создать приложение для macOS или Linux, я бы предложил использовать встроенные версии clang или gcc на этих платформах.
Большое спасибо за подробное обсуждение и объяснение.. @Colengms
Я только что установил сообщество VS2015.
Я не удалял VS2010.
Он преобразовал большое приложение, над которым я сейчас работаю.
Я получаю эту ошибку: фатальная ошибка C1083: Не удается открыть включаемый файл: 'windows.h': Нет такого файла или каталога
Вот новый код, который я только что создал с использованием пустого шаблона, состоящего из нескольких символов вместо UTF 16:
В этом маленьком фрагменте кода может быть много проблем, я просто собрал его вместе. Я даже не стал строить шаблон диалога.
Тем не менее, единственная ошибка, которую он сообщает, это - фатальная ошибка C1083: Невозможно открыть включаемый файл: 'windows.h': Нет такого файла или каталога
Я искал на диске C файл windows.h и ничего не нашел.
Я обнаружил, что инструмент поиска Microsoft бесполезен со времен Win 7. Вот что он нашел при поиске windows.h.
Зачем мне пролистывать 209 файлов с такими именами, как
когда я ищу файл с именем "windows.h"? Я искал форум по функции поиска MS, но безуспешно.
В любом случае, поиск не находит файла с именем windows.h.
Почему я не могу найти файл windows.h VS2010?
Что я делаю не так?
Ответы
Проверьте его в Program Files (x86)\Windows Kits\8.1\Include\um\Windows.h . Добавьте путь включения к пути VS2015 и повторите попытку.
Все ответы
Если вы приняли параметры по умолчанию при установке VS2015 Community, то VC++ НЕ был включен в установку. Чтобы получить VC++, необходимо выполнить выборочную установку и установить соответствующие флажки. Запустите программу установки VS2015 через апплет панели управления (например, «Программы и компоненты») и посмотрите, помечен ли VC++ как установленный.
Вы строите из командной строки или из проекта в IDE?
Я решил установить все, вот список функций программы установки под предложенной вами панелью управления:
Почему файл windows.h VS2010 не может быть найден поиском? Установка VS2015 стерла часть VS2010 с диска? Это не проблема, как только я начну работать с VS2015, просто любопытно.
Я ценю ваши усилия, чтобы помочь мне.
Проверьте его в Program Files (x86)\Windows Kits\8.1\Include\um\Windows.h . Добавьте путь включения к пути VS2015 и повторите попытку.
Почему файл windows.h VS2010 не может быть найден поиском? Установка VS2015 стерла часть VS2010 с диска? Это не проблема, когда у меня работает VS2015, просто любопытно.Я ценю ваши усилия помочь мне.
Ларри
Если вы хотите использовать набор инструментов VS2010, перейдите на страницу свойств проекта и измените набор инструментов с v140 на v100 (насколько я помню, это тот самый).
Когда вы устанавливали VS2015, вы делали это под учетной записью администратора?
После создания проекта VC++ 2015 Win32 с использованием пустого шаблона проекта каталоги VC++ по умолчанию были --
Спасибо, Рупеш Шукла:
Почему моя работа заключается в поиске включаемых каталогов, которые использует Visual Studio 2015? Разве нет программ для таких вещей?
c:\program files (x86)\windows kits\8.1\include\um\windows.h(1): фатальная ошибка C1083: невозможно открыть включаемый файл: 'winapifamily.h': нет такого файла или каталога р>
Я использовал проводник Windows для поиска winapifamily.h и ничего не нашел. Конечно, это не повод полагать, что его там нет.
У меня есть много папок, определенных в списке включаемых каталогов VS2010, исполняемых каталогов и подобных вещей. Есть ли способ заставить VS2015 сделать копию этих списков без копирования имени каждой папки?
Пока я спрашиваю, где находится исполняемый код VS2015? Когда я установил его, на моем рабочем столе нет ярлыка, и я хотел бы его добавить.
Почему поиск не находит файл windows.h в VS2010? Установка VS2015 стерла часть VS2010 с диска? Это не проблема, как только я начну работать с VS2015, просто любопытно.
Я ценю ваши усилия, чтобы помочь мне.
Ларри
Если вы хотите использовать набор инструментов VS2010, перейдите на страницу свойств проекта и измените набор инструментов с v140 на v100 (насколько я помню, это тот самый).
Когда вы устанавливали VS2015, вы делали это под учетной записью администратора?
Еще раз спасибо, RLWA32:
Я не заинтересован в сохранении VS2010 после того, как VS2015 заработает.
Я бы хотел, чтобы его можно было использовать до тех пор, пока VS2015 не заработает должным образом.
Однако первые попытки скомпилировать приложения с помощью VS2010 не увенчались успехом. У меня нет ничего срочного, так что давайте приступим к VS2015.
Я вошел в систему как администратор, когда устанавливал VS2010 в свою систему Win 8.1.
Я не заинтересован в сохранении VS2010 после того, как VS2015 заработает.Я хотел бы использовать его до тех пор, пока VS2015 не заработает должным образом.
Однако первые попытки скомпилировать приложения с помощью VS2010 не увенчались успехом. У меня нет ничего срочного, поэтому давайте приступим к VS2015.
Я вошел в систему как администратор, когда устанавливал VS2010 в свою систему Win 8.1.
К вашему сведению, пути, перечисленные в моем комментарии выше, относятся к установке VC++2015 в 32-битной системе. В 64-битной системе путь к файлам программы будет "C:\Program Files (x86).."
Вы сможете выполнять сборку с помощью набора инструментов VS2010 из VS2015, если измените набор инструментов платформы, как описано выше.
Хотя ручное добавление пути к файлу (например, Program Files (x86)\Windows Kits\8.1\Include\) могло решить проблему windows.h, это симптом проблемы с установкой VS2015. Вам не нужно было делать такое ручное добавление для одного из путей к каталогам VC++ по умолчанию. Вы можете рассмотреть возможность использования диспетчера свойств для просмотра различных страниц свойств по умолчанию и содержимого их свойств каталогов VC++, чтобы убедиться, что они содержат правильные значения.
Для меня запуск VS2015:
Я получаю эти списки из этого окна в свойствах проекта:
Релизная версия относится к файлам заголовков, которые я хочу сделать доступными для каждой сборки в $(UTILITIES_ROOT).
Они были стерты в конфигурации отладки. Я просмотрел список включаемых папок в окне редактирования, которое появляется при просмотре различных конфигураций в режиме отладки. Я был осторожен, и я не верю, что стер все, что могло появиться в поле редактирования.
Возможно, я смотрю неправильную информацию, но эти списки не совпадают.
Еще раз спасибо, что нашли время помочь мне.
Пути, которые я разместил выше, были получены из свойств проекта, но после того, как я выбрал «Изменить» в раскрывающемся списке. Выбор «Редактировать» открывает диалоговое окно, в котором отображаются фактические строки пути, а не только имена макросов VS. Например, ниже показано, что отображается для сведений о пути включения VC++
Попробуйте установить пакет обновления 1 для VS2015, а затем повторите попытку.
Спасибо, Рупеш Шукла, RLWA32 и Павел:
У меня был долгий день, и я вернусь к этому завтра по времени западного побережья США.
Я очень благодарен за ваши усилия, чтобы помочь мне.
Я уверен, что мы сможем запустить VS2015 на моем компьютере.
Поскольку кажется, что с установкой VS2015 что-то не так, на что указывает тот факт, что я должен сказать ей, где найти windows.h, я решил удалить и VS2015, и VS2010.
Я вижу, что многие элементы среды выполнения Microsoft Visual Studio и C остались позади.
Возможно, все станет проще, если я избавлюсь от всего, что было добавлено на мой компьютер в этой и предыдущих установках Visual Studio.
Это окно "Программы и компоненты" в хронологическом порядке. Мне нужны рекомендации о том, что я могу удалить, чтобы установка VS2015 прошла гладко.
Вероятно, это связано с попыткой переустановить VS2010 неделю назад.
Я знаю, что некоторые из этих программ не относятся к Visual Studio, но большинство из них так и есть. Я не использую SQL-сервер Microsoft, хотя другие программы могут им пользоваться.
В любом случае, я хотел бы очистить некоторые из них, а затем переустановить VS2015.
Можете ли вы сообщить мне, что можно удалить, или, если проще, что мне следует оставить?
Visual Studio и ее пакеты обновлений устанавливают так много программного обеспечения, что я думаю, что не рекомендуется пытаться удалить что-то одно. Первое, что нужно сделать, это сделать хорошую резервную копию. Вам также следует рассмотреть возможность создания резервной копии образа вашей системы, а также резервной копии на основе файлов. Хорошая резервная копия необходима, когда вы планируете внести серьезные изменения. Я не могу не подчеркнуть этого достаточно.
Я думаю, что самым правильным путем будет полное удаление всех версий VS.
Однако, если вы установили другое программное обеспечение (например, автономные SDK), интегрированное с Visual Studio, я бы удалил его в качестве первого шага. То же самое для любого программного обеспечения, которое вы установили с помощью встроенных средств VS2015 для установки расширений и других пакетов.Вы можете переустановить это программное обеспечение после переустановки самой Visual Studio.
После удаления любого вспомогательного программного обеспечения, которое, как вы знаете, вы установили отдельно, следующим шагом будет удаление сначала VS2015, а затем VS2010. В этот момент вы можете просмотреть, что осталось в вашей системе, и решить, следует ли удалить что-либо еще.
При установке (или переустановке) нескольких версий VS в системе рекомендуется сначала установить самую старую версию и расположить установки так, чтобы самая последняя версия VS была установлена последней.
Я рекомендую, если вы следуете методу удаления/переустановки, установить все обновления и пакеты обновления на VS2010, прежде чем переходить на VS2015.
Это мое мнение, и нет никакой гарантии, что следование этому совету приведет к успешному результату. Я предлагаю вам также получить и рассмотреть рекомендации других, прежде чем принимать решение о дальнейших действиях.
И это ошибка. Нет причин почему, система может найти его, потому что он используется в нескольких других файлах, только этот файл не умеет с ним работать. Для справки, весь файл с ошибками (ColorBasics.rc):
8 ответов 8
Если вы еще этого не сделали, попробуйте добавить "Путь SDK\Включить" в:
И добавьте "SDK Path\Lib" в:
Кроме того, попробуйте изменить "Windows.h" на
Если это не поможет, проверьте физическое существование файла, он должен находиться в папке "\VC\PlatformSDK\Include" в каталоге установки Visual Studio.
Некоторые ответы: я использую Ultimate Edition Visual Studio, я перепробовал все, что описано в вашем сообщении (include и lib), а также изменил «Windows.h» на . Ничего не сработало. Также папка PlatformSDK не существует в -MVS2012-/VC/, но она есть в папке WindowsSDK/Include
Для ясности: после редактирования 12 ноября 2014 г. были добавлены правильные шаги, и, таким образом, это правильный ответ.
@Choufler Я добавил файлы Include и Lib в проект, но windows.h не существует в папке "\VC\PlatformSDK\Include".
У меня также сработало добавление пути, представленного переменной $(WindowsSdkDir)\include и $(WindowsSdkDir)\lib
@PavelRogovoy, не могли бы вы рассказать, как это сделать на машине сборки только из командной строки? Это переменная пути или мне нужно установить ее в каком-то файле конфигурации?
Запустите Visual Studio. Перейдите в Инструменты->Параметры и разверните Проекты и решения. Выберите Каталоги VC++ в дереве и выберите Включить файлы в списке справа.
Если это отсутствует, вы обнаружили проблему. Если нет, ищите файл. Он должен находиться в
C:\Program Files\Microsoft SDK\Windows\v6.0A\Include
C:\Program Files (x86)\Microsoft SDK\Windows\v6.0A\Include
если VS был установлен в каталоге по умолчанию.
Для Visual Studio 2013 в VC+++ пути были разделены точкой с запятой. Поэтому мне пришлось добавить точку с запятой, а затем путь: Ex. $(IncludePath);$(VCInstallDir)atlmfc\include;C:\Program Files\Microsoft SDK\Windows\v7.1\Include
Если вы ориентируетесь на Windows XP ( v140_xp ), попробуйте установить Поддержку Windows XP для C++.
Начиная с Visual Studio 2012, набор инструментов по умолчанию (v110) больше не поддерживает Windows XP. В результате может возникнуть ошибка Windows.h, если ваш проект ориентирован на Windows XP с пакетами C++ по умолчанию.
Проверьте, какая версия Windows SDK указана в наборе инструментов платформы вашего проекта. (Проект → Свойства → Свойства конфигурации → Общие). Если ваш набор инструментов заканчивается на _xp , вам необходимо установить поддержку XP.
Откройте установщик Visual Studio и нажмите Изменить для вашей версии Visual Studio. Откройте вкладку Отдельные компоненты и прокрутите вниз до раздела Компиляторы, инструменты сборки и среды выполнения. Внизу установите флажок Поддержка Windows XP для C++ и нажмите Изменить, чтобы начать установку.
В настоящее время невозможно скомпилировать Abseil с помощью VS 2017 без ошибок.
Добавление чего-то подобного решает эту проблему с включениями windows.h.
Текст был успешно обновлен, но возникли следующие ошибки:
Комментарий удален 17 октября 2017 г.
Я не использовал Bazel для сборки, вместо этого я более или менее просто поместил файлы в существующий проект VS2017.4 и просто попытался его скомпилировать.
Теперь я вижу здесь WIN32_LEAN_AND_MEAN, поэтому, вероятно, поэтому нет проблем при сборке с использованием bazel.
zhangxy988 прокомментировал 18 октября 2017 г.
JonathanDCohen прокомментировал 27 октября 2017 г.
Дружественный пинг здесь :) @Remotion у вас все еще есть проблемы с компиляцией в Windows?
прокомментировал zivsha 8 ноября 2017 г. •
К вашему сведению, только что клонировал спуск к моему проекту cmake (с помощью googletest и cctz с помощью Sarcasm PR для поддержки CMake), и единственная проблема, с которой я столкнулся, связана с обычным std::max :
Строки с 290 по 291 в 9850abf
arena->pagesize = std::max (system_info. dwPageSize , | < /tr>
system_info.dwAllocationGranularity ); |
JonathanDCohen прокомментировал 9 ноября 2017 г.
Мне любопытно, что произойдет, если вы попытаетесь использовать, например, absl/memory/memory.h, который имеет вызов numeric_limits ::max().
Мы стремимся быть переносимыми, чтобы пользователи не модифицировали код подобным образом, поэтому, если проблема заключается в минимальных и максимальных макросах MSVC, то это кажется легко решаемой проблемой
Комментарий удален 9 ноября 2017 г.
Я пробовал спускаться с vcpkg, и в большинстве случаев это работает.
Но все еще есть проблемы с некоторыми заголовочными файлами, такими как .
Он непосредственно включает в себя .
Конечно, решение для пользователей довольно простое: нужно определить NOMINMAX и WIN32_LEAN_AND_MEAN для всего проекта или определить их непосредственно перед включением .
ras0219-msft прокомментировал 10 ноября 2017 г. •
@Remotion решает ли это проблему для вас?
Редактировать: это решает проблему только для некоторых файлов; у других есть вызовы Some::Type::max(), которые также необходимо решить.
Комментарий rongjiecomputer от 28 ноября 2017 г.
В идеале файл windows.h не следует использовать в файлах заголовков, поскольку файл windows.h хорошо известен своей проблемой загрязнения пространства имен/макросов. Большинство библиотек C++, таких как libstdc++, libc++ и Boost, любой ценой избегают включения windows.h в заголовочный файл. Abseil также должен следовать этой передовой практике.
zhangxy988 прокомментировал 6 декабря 2017 г.
Rongjiecomputer прокомментировал 25 января 2018 г. •
@zhangxy988 Я готов помочь с этим.
Я планирую создать новый внутренний заголовочный файл ( absl/base/internal/windows_types.h ?).
В этом заголовочном файле мы определим некоторые типы Windows, такие как DWORD, SHORT, необходимые Abseil во внутреннем пространстве имен (absl::base_internal, absl::base_internal::win32?). Доступ к ним как absl::base_internal::win32::DWORD и т. д.
Для SRWLOCK и CONDITION_VARIABLE (используемых в waiter.h) мы можем объявить две структуры с точно такими же полями-членами, но с именами ABSL_SRWLOCK, ABSL_CONDITION_VARIABLE, чтобы пользователь по-прежнему мог включать windows.h без конфликта. Мы можем переинтерпретировать указатели обратно на PSRWLOCK и PCONDITION_VARIABLE в исходном файле (функциям Win32 нужны только указатели на SRWLOCK и CONDITION_VARIABLE ).
spinlock_win32.inc напрямую использует функцию Sleep. Один из способов — создать функцию absl::base_internal::sleep и использовать Sleep для реализации этой функции в исходном файле. Другой способ — просто объявить VOID WINAPI Sleep(DWORD dwMilliseconds) в absl/base/internal/windows_types.h. И то, и другое не вызовет никаких неудобств для пользователя.
Читайте также: