Не удается открыть источник файл stdafx h

Обновлено: 05.07.2024

Компилятор создает ошибку C1083, когда не удается найти требуемый файл. Эта ошибка имеет несколько возможных причин. Наиболее распространенными причинами являются неверный путь поиска include или отсутствующие или неправильно именованные файлы заголовков, но другие типы файлов и проблемы могут также вызвать C1083. Ниже приведены некоторые распространенные причины, по которым компилятор создает эту ошибку.

Указано неверное имя файла

При вводе имени файла допущена ошибка. Например, примененная к объекту директива

Файл не включен в путь поиска включаемых файлов

Это указывает компилятору искать файл в том же каталоге, который содержит исходный файл, а затем искать в других местах, заданных средой сборки. Если кавычки содержат абсолютный путь, компилятор выполняет поиск файла только в этом расположении. Если кавычки содержат относительный путь, компилятор выполняет поиск файла в каталоге относительно исходного каталога.

Если имя заключено в угловые скобки,

Если включаемые файлы находятся в другом каталоге относительно исходного каталога и в директивах Include используется относительный путь, то вместо угловых скобок следует использовать двойные кавычки. Например, если файл заголовка myheader.h находится в подкаталоге именованных заголовков проекта, в этом примере не удается найти файл и вызывается C1083:

но этот пример работает:

Проблемы с библиотекой сторонних производителей и vcpkg

если вы видите эту ошибку при попытке настроить библиотеку стороннего производителя в рамках сборки, рассмотрите возможность использования vcpkg, диспетчера пакетов C++ для установки и сборки библиотеки. vcpkg поддерживает большой и растущей список библиотек сторонних производителейи задает все свойства конфигурации и зависимости, необходимые для успешной сборки в рамках проекта.

Файл находится в проекте, но не в пути поиска включаемых файлов

Чтобы устранить эту проблему, исправьте путь, используемый компилятором для поиска включаемого или импортируемого файла. В новом проекте используются пути поиска include по умолчанию. Может потребоваться изменить путь поиска include, чтобы добавить каталог для проекта. При компиляции в командной строке добавьте путь к переменной среды include или /I параметр компилятора, чтобы указать путь к файлу.

чтобы задать путь к каталогу включения в Visual Studio, откройте диалоговое окно страницы свойств проекта. выберите VC++ каталоги в разделе свойства конфигурации в левой области, а затем измените свойство включаемые каталоги . дополнительные сведения о каталогах для отдельных пользователей и проектов, поиск которых выполняется компилятором в Visual Studio, см. в разделе страница свойств VC++ directories. Дополнительные сведения о /I параметре компилятора см. в разделе /I (дополнительные каталоги включаемых данных).

Не задана среда командной строки INCLUDE или LIB

Если компилятор вызывается из командной строки, для указания путей поиска часто используются переменные среды. Если путь поиска, описанный в переменной среды include или lib , задан неправильно, может быть сформирована ошибка C1083. Мы настоятельно рекомендуем использовать ярлык командной строки разработчика, чтобы задать базовую среду для сборок с командной строкой. Дополнительные сведения см. в разделе сборка C/C++ в командной строке. Дополнительные сведения об использовании переменных среды см. в разделе инструкции. Использование переменных среды в сборке.

Возможно, файл заблокирован или используется

Если для изменения или доступа к файлу используется другая программа, файл может быть заблокирован. Попробуйте закрыть файл в другой программе. иногда другая программа может быть Visual Studio сама по себе при использовании параметров параллельной компиляции. Если отключить параметр параллельной сборки, то эта ошибка исчезнет, а это проблема. Эта проблема также может быть вызвана другими системами параллельной сборки. Будьте внимательны при задании зависимостей файлов и проектов, чтобы порядок сборки был правильным. В некоторых случаях рекомендуется создать промежуточный проект для принудительного создания последовательности зависимостей для общего файла, который может быть создан несколькими проектами. Иногда антивирусные программы временно блокируют недавно измененные файлы для проверки. Если возможно, рассмотрите возможность исключения каталогов сборки проекта из антивирусного сканера.

Включена неправильная версия имени файла

Предкомпилированные заголовки еще не скомпилированы

Если проект настроен для использования предварительно скомпилированных заголовков, необходимо .pch создать соответствующие файлы, чтобы можно было скомпилировать файлы, использующие содержимое заголовка. например, pch.cpp файл ( stdafx.cpp в Visual Studio 2017 и более ранних версий) автоматически создается в каталоге проекта для новых проектов. Сначала необходимо скомпилировать этот файл, чтобы создать предкомпилированные файлы заголовков. В типичном проекте процесса сборки это выполняется автоматически. Дополнительные сведения см. в разделе Создание предкомпилированных файлов заголовков.

Дополнительные причины

Вы установили пакет SDK или библиотеку стороннего производителя, но после установки пакета SDK или библиотеки не открывали новое окно командной строки разработчика. Если пакет SDK или библиотека добавляет файлы в путь поиска включаемых файлов, может потребоваться открыть новое окно командной строки разработчика, чтобы получить эти изменения переменных среды.

Файл использует управляемый код, но параметр компилятора /clr не указан. Дополнительные сведения см. в разделе /clr (компиляция среды CLR).

Файл компилируется с использованием другого параметра /analyze компилятора, чем используется для предварительной компиляции заголовков. При предварительной компиляции заголовков для проекта все должны использовать одни и те же /analyze Параметры. дополнительные сведения см. в разделе /analyze (Code Analysis).

файл или каталог был создан подсистема Windows для Linux, учитывается регистр в каждом каталоге, и указанный регистр пути или файла не соответствует регистру пути или файла на диске.

Файл, каталог или диск доступен только для чтения.

Visual Studio или средства командной строки не имеют достаточных разрешений для чтения файла или каталога. это может произойти, например, когда файлы проекта имеют разные права владения, чем процесс, выполняемый Visual Studio или программ командной строки. иногда эту ошибку можно устранить, запустив Visual Studio или командную строку разработчика от имени администратора.

Недостаточно дескрипторов файлов. Закройте часть приложений и повторите компиляцию. Эта ситуация маловероятна в обычных условиях. Однако она может возникать при построении крупных проектов на компьютере с ограниченной физической памятью.

Пример

В следующем примере создается ошибка C1083, если файл заголовка "test.h" не существует в исходном каталоге или в пути поиска include.

Сведения о том, как создавать проекты C/C++ в интегрированной среде разработки или в командной строке, а также сведения о настройке переменных среды см. в разделе проекты и сборки систем.

Файлы C/C++/Objective-C Header, такие как StdAfx.h, считаются разновидностью файла Разработчик (C/C++/Objective-C Header). Они соотносятся с расширением H, разработанным компанией Micro-Star International для MSI Afterburner 4.6.0.

Файл StdAfx.h изначально был выпущен с DownloadX ActiveX Download Control 1.6.8 05/19/2014 для ОС Windows 10. 03/09/2019 вышла версия 4.6.0 для MSI Afterburner 4.6.0.

Продолжайте читать, чтобы найти загрузку правильной версии файла StdAfx.h (бесплатно), подробные сведения о файле и порядок устранения неполадок, возникших с файлом H.




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Программа: MSI Afterburner 4.6.0
Разработчик: Micro-Star International
Программное обеспечение: MSI Afterburner
Версия ПО: 4.6.0
Сведения о файле
Размер файла (байты): 1146
Дата первоначального файла: 10/21/2019
Дата последнего файла: 01/24/2020
Информация о файле Описание
Размер файла: 1146 bytes
Дата и время изменения файла: 2020:01:24 03:13:20+00:00

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Общие ошибки выполнения StdAfx.h

Ошибки файла StdAfx.h часто возникают на этапе запуска MSI Afterburner, но также могут возникать во время работы программы. Эти типы ошибок H также известны как «ошибки выполнения», поскольку они возникают во время выполнения MSI Afterburner. К числу наиболее распространенных ошибок выполнения StdAfx.h относятся:

  • Не удается найти StdAfx.h.
  • StdAfx.h — ошибка.
  • Не удалось загрузить StdAfx.h.
  • Ошибка при загрузке StdAfx.h.
  • Не удалось зарегистрировать StdAfx.h / Не удается зарегистрировать StdAfx.h.
  • Ошибка выполнения — StdAfx.h.
  • Файл StdAfx.h отсутствует или поврежден.

Программа: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\SharedMemory\MACMSharedMemorySample\StdAfx.h

Среда выполнения получила запрос от этого приложения, чтобы прекратить его необычным способом.
Для получения дополнительной информации обратитесь в службу поддержки приложения.

В большинстве случаев причинами ошибок в H являются отсутствующие или поврежденные файлы. Файл StdAfx.h может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с MSI Afterburner) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла StdAfx.h может быть вызвано отключением питания при загрузке MSI Afterburner, сбоем системы при загрузке или сохранении StdAfx.h, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.

Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку StdAfx.h, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение MSI Afterburner (или схожее программное обеспечение), удалите его, затем попробуйте переустановить MSI Afterburner.

Чтобы удалить программное обеспечение MSI Afterburner, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить MSI Afterburner.

Если на этапе 2 также не удается устранить ошибку StdAfx.h, перейдите к шагу 3 ниже.


MSI Afterburner 4.6.0

Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла StdAfx.h. Мы храним полную базу данных файлов StdAfx.h со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии MSI Afterburner . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Program Files (x86)\PLSQL Developer\PlugInDoc\VC++\DemoWin32\
Windows 10: C:\xampp\FileZillaFTP\source\
Windows 10: C:\Program Files (x86)\WinHTTrack\src_win\libhttrack\
Windows 10: C:\Program Files (x86)\Genesis Mobile\DownloadX ActiveX Download Control 1.6\Examples\Visual C++\DownloadXProDemo_VisualCpp\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\Plugins\Monitoring\AIDA64\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\Plugins\Monitoring\CPU\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\Plugins\Monitoring\GPU\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\Plugins\Monitoring\PerfCounter\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\Plugins\Monitoring\SMART\
Windows 10: C:\xampp\FileZillaFTP\source\interface\
Windows 10: C:\Program Files\PDFCreator\COM Scripts\C++\CppCOMTest\CppCOMTest\
Windows 10: C:\Program Files\BreakPoint Software\Hex Workshop v6.8\hwapi\examples\SelectionExample\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\SharedMemory\MACMSharedMemorySample\
Windows 10: C:\Program Files (x86)\MSI Afterburner\SDK\Samples\SharedMemory\MAHMSharedMemorySample\
Windows 10: C:\Program Files\MATLAB\R2019b\toolbox\matlab\winfun\mwsamp2\
Windows 10: C:\Program Files (x86)\Virtual CD v10\API\examples\MFC\VcdAPITest\
Windows 10: C:\Program Files (x86)\WinHTTrack\src_win\WinHTTrackIEBar\
Windows 10: C:\Program Files\MATLAB\R2019b\toolbox\matlab\winfun\mwsamp\

Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.

Precompiled headers предназначены для ускорения сборки проектов. Обычно программисты начинают знакомиться с Visual C++, используя крошечные проекты. На них сложно заметить выигрыш от precompiled headers. Что с ними, что без них, на глаз программа компилируется одинаковое время. Это добавляет путаницы. Человек не видит для себя пользы от этого механизма и решает, что он для специфичных задач и ему никогда не понадобится. И иногда считает так многие годы.

На самом деле, precompiled headers весьма полезная технология. Пользу от него можно заметить, даже если в проекте всего несколько десятков файлов. Особенно выигрыш становится заметен, если используются такие тяжёлые библиотеки как boost.

Если посмотреть *.cpp файлы в проекте, то можно заметить, что во многие включаются одни и те-же наборы заголовочных файлы. Например, , , . В свою очередь, эти файлы включают другие заголовочные файлы и так далее.

Можно существенно сократить объем работы, которую должен проделать препроцессор при компиляции проекта. Идея в том, чтобы заранее препроцессировать группу файлов и затем просто подставлять готовый фрагмент текста.

На самом деле, делается ещё ряд шагов. Можно хранить не просто текст, а более обработанную информацию. Я не знаю, как именно устроено в Visual C++. Но, например, можно хранить текст уже разбитый на лексемы. Это ещё больше ускорит процесс компиляции.

Как работают Precompiled Headers

Файл, который содержит precompiled headers, имеет расширение ".pch". Имя файла обычно совпадает с названием проекта. Естественно, это и другие используемые имена можно изменить в настройках. Файл может быть весьма большим и зависит от того, как много заголовочных файлов в нём раскрыто. Например, в проекте PVS-Studio он занимает около 3 мегабайт.

В файле «stdafx.h» находится самое интересное. Сюда нужно включить заголовочные файлы, которые будут заранее препроцессироваться. В качестве примера, вот файл stdafx.h, используемый нами в PVS-Studio (файл сокращён для статьи):

Теперь во все файлы *.c/*.cpp следует включить «stdafx.h». Заодно стоит удалить из этих файлов заголовки, которые уже включаются с помощью «stdafx.h».

А что делать, если используются хотя и похожие, но разные наборы заголовочных файлов? Например, такие:

Нужно делать отдельные precompiled headers? Так сделать можно, но не нужно.

Как использовать Precompiled Headers

При создании нового проекта Wizard в Visual Studio создаёт два файла: stdafx.h и stdafx.cpp. Именно с помощью них и реализуется механизм precompiled headers.

На самом деле, эти файлы могут называться, как угодно. Важно не название, а параметры компиляции в настройках проекта.

В *.c/*.cpp файле можно использовать только один precompiled header. Однако, в одном проекте может присутствовать несколько разных precompiled headers. Пока будем считать, что он у нас только один.

Итак, если вы воспользовались wizard-ом, то у вас уже есть файлы stdafx.h и stdafx.cpp. Плюс выставлены все необходимые ключи компиляции.

Если в проекте не использовался механизм precompiled headers, то давайте рассмотрим, как его включить. Предлагаю следующую последовательность действий:

  1. Во всех конфигурациях для всех *.c/*.cpp файлов включаем использование precompiled headers. Это делается на вкладке «Precompiled Header»:
  1. Выставляем для параметра «Precompiled Header» значение «Use (/Yu)».
  2. Для параметра «Precompiled Header File» указываем «stdafx.h».
  3. Для параметра «Precompiled Header Output File» указываем "$(IntDir)$(TargetName).pch".

Вот мы и включили механизм precompiled headers. Теперь, если мы запустим компиляцию, то будет создан *.pch файл. Однако, затем компиляция остановится из-за ошибок.

Заголовочный файл «stdafx.h» должен включаться в *.c/*.cpp файл самым первым. Обязательно! Иначе всё равно возникнут ошибки компиляции.

Если подумать, в этом есть логика. Когда файл «stdafx.h» находится в самом начале, то можно подставить уже препроцессированный текст. Этот текст всегда одинаков и ни от чего не зависит.

Life hack

Есть вариант, как использовать precompiled headers легко и просто. Способ подойдёт не везде и всегда, но мне он часто помогал.

Идём на вкладку настроек «Advanced». Выбираем все конфигурации. В поле «Forced Included File» пишем:

Теперь «stdafx.h» автоматически будет включаться в начало ВСЕХ компилируемых файлов. PROFIT!

Что включать в stdafx.h

Это очень важный момент. Бездумное включение в «stdafx.h» всего подряд не только не ускорит компиляцию, но и наоборот замедлит её.

Все файлы, включающие «stdafx.h», зависят от его содержимого. Пусть в «stdafx.h» включен файл «X.h». Если вы поменяете хоть что-то в «X.h», это может повлечь полную перекомпиляцию всего проекта.

Правило. Включайте в «stdafx.h» только те файлы, которые никогда не изменяются или меняются ОЧЕНЬ редко. Хорошими кандидатами являются заголовочные файлы системных и сторонних библиотек.

Если включаете в «stdafx.h» собственные файлы из проекта, соблюдайте двойную бдительность. Включайте только те файлы, которые меняются очень-очень редко.

Если какой-то *.h файл меняется раз в месяц, это уже слишком часто. Как правило, редко удаётся сделать все правки в h-файле с первого раза. Обычно требуется 2-3 итерации. Согласитесь, 2-3 раза полностью перекомпилировать весь проект — занятие неприятное. Плюс полная перекомпиляция потребуется всем вашим коллегам.

Не увлекайтесь с неизменяемыми файлами. Включайте только то, что действительно часто используется. Нет смысла включать , если это нужно только в двух местах. Там, где нужно, там и подключите этот заголовочный файл.

Несколько Precompiled Headers

Зачем в одном проекте может понадобиться несколько precompiled headers? Действительно, это нужно не часто. Но приведу пару примеров.

В проекте используются одновременно *.c и *.cpp файлы. Для них нельзя использовать единый *.pch файл. Компилятор выдаст ошибку.

Нужно создать два *.pch файла. Один должен получаться при компилировании C-файла (xx.c), а другой при компилировании C++-файла (yy.cpp). Соответственно, в настройках надо указать, чтобы в С-файлах использовался один precompiled header, а в С++-файлах — другой.

Примечание. Не забудьте указать разные имена для *.pch файлов. Иначе один файл будет перетирать другой.

Другая ситуация. Одна часть проекта использует одну большую библиотеку, а другая часть другую большую библиотеку.

Естественно, не стоит всем участкам кода знать про обе библиотеки. В (неудачных) библиотеках могут пересекаться имена каких-то сущностей.

Логично сделать два precompiled headers и использовать их в разных участках программы. Как уже отмечалось, можно задать произвольные имена файлов, из которых генерируются *.pch файлы. Да и имя *.pch файла тоже можно изменить. Всё это, конечно, требуется делать аккуратно, но ничего сложного в использовании двух precompiled headers нет.

Типовые ошибки при использовании Precompiled Headers

Прочитав внимательно материал выше, вы сможете понять и устранить ошибки, связанные с stdafx.h. Но давайте ещё раз пройдёмся по типовым ошибкам компиляции и разберём их причины. Повторенье — мать ученья.

Если это невозможно, то следует не использовать precompiled header для этого *.c/*.cpp файла. Уберите ключ /Yu.

В проекте присутствуют как C (*.c), так и C++ (*.cpp) файлы. Для них нельзя использовать единый precompiled header (*.pch файл).

  1. Отключить для всех Си-файлов использование precompiled headers. Как показывает практика, *.с файлы препроцессируются в несколько раз быстрее, чем *.cpp файлы. Если *.c файлов не очень много, то, отключив precompiled headers для них, вы ничего не потеряете
  2. Завести два precompiled headers. Первый должен создаваться из stdafx_cpp.cpp, stdafx_cpp.h. Второй из stdafx_c.c, stdafx_c.h. Соответственно, в *.c и *.cpp файлах следует использовать разные precompiled headers. Имена *.pch файлов естественно тоже должны различаться.

Из-за precompiled header компилятор глючит

Содержимое файла «my.h» не будет использоваться. В результате, нельзя будет использовать функции, объявленные в этом файле. Такое поведение очень сбивает программистов с толку. Они «лечат» его полным отключением precompiled headers и потом рассказывают байки о глючности Visual C++. Запомните, компилятор — это один из наиболее редко глючащих инструментов. В 99.99% случаев надо не злиться на компилятор, а искать ошибку у себя (Proof).

Ещё один вариант — используйте Forced Included File. См. выше раздел «Life hack».

Из-за precompiled headers проект постоянно перекомпилируется целиком

В stdafx.h включён файл, который регулярно редактируется. Или случайно включён автогенерируемый файл.

Внимательно проверьте содержимое файла «stdafx.h». В него должны входить только заголовочные файлы, которые не изменяются или изменяются крайне редко. Учтите, что включённые файлы могут не меняться, но внутри они ссылаются на другие изменяющиеся *.h файлы.

Творится что-то непонятное

Иногда может возникнуть ситуация, что вы поправили код, а ошибка не исчезает. Отладчик показывает непонятные вещи.

Причиной может быть *.pch файл. Как-то так получилось, что компилятор не замечает изменения в одном из заголовочных файлов и не перестраивает *.pch файл. В результате, подставляется старый код. Возможно, это происходило из-за каких-то сбоев, связанных с временем модификации файлов.

Это ОЧЕНЬ редкая ситуация. Но она возможна и про неё надо знать. Я за многие годы программирования сталкивался с ней только 2-3 раза. Помогает полная перекомпиляция проекта.

Проект, использующий precompiled headers не удаётся проверить с помощью PVS-Studio

Это наиболее частая ситуация, с которой к нам обращаются в поддержку. Подробности изложены в документации: "Устранение неисправностей при работе PVS-Studio". Здесь опишу ситуацию кратко.

Если решение (solution) компилируется, это вовсе не значит, что оно правильно устроено. Часто одно решение (solution) содержит множество проектов. В каждом проекте используются свои precompiled headers (имеется свой stdafx.h и stdafx.cpp).

И, какой из stdafx.h подхватится, это интересный вопрос. Но раз программа компилируется — программисту везёт.

К сожалению, нам сложно повторить поведение, которое возникает при использовании *.pch файла. «Честный» препроцессор работает по-другому.

В том, что solution, на самом деле, устроен не верно, можно убедиться, временно отключив precompiled headers. Сразу может вылезти масса интересных ошибок, и программист будет искренне удивляться, каким же чудом компилировался его проект.

За подробностями вновь делаю отсылку к документации. Плюс, если что-то всё равно не ясно, мы подскажем в поддержке.

Заключение

Как вы увидели, ничего сложного в precompiled headers нет. Все «многочисленные глюки компилятора», с которыми сталкивается программист при их использовании, на самом деле, являются непониманием принципов работы. Надеюсь, эта статья поможет устранить непонимание.

Precompiled headers являются очень полезным механизмом, позволяющим существенно увеличить скорость компиляции проектов.

Precompiled headers предназначены для ускорения сборки проектов. Обычно программисты начинают знакомиться с Visual C++, используя крошечные проекты. На них сложно заметить выигрыш от precompiled headers. Что с ними, что без них, на глаз программа компилируется одинаковое время. Это добавляет путаницы. Человек не видит для себя пользы от этого механизма и решает, что он для специфичных задач и ему никогда не понадобится. И иногда считает так многие годы.

На самом деле, precompiled headers весьма полезная технология. Пользу от него можно заметить, даже если в проекте всего несколько десятков файлов. Особенно выигрыш становится заметен, если используются такие тяжёлые библиотеки как boost.

Если посмотреть *.cpp файлы в проекте, то можно заметить, что во многие включаются одни и те-же наборы заголовочных файлы. Например, <vector>, <string>, <algorithm>. В свою очередь, эти файлы включают другие заголовочные файлы и так далее.

Можно существенно сократить объем работы, которую должен проделать препроцессор при компиляции проекта. Идея в том, чтобы заранее

группу файлов и затем просто подставлять готовый фрагмент текста.

На самом деле, делается ещё ряд шагов. Можно хранить не просто текст, а более обработанную информацию. Я не знаю, как именно устроено в Visual C++. Но, например, можно хранить текст уже разбитый на лексемы. Это ещё больше ускорит процесс компиляции.

Общие ошибки выполнения StdAfx.h

Ошибки файла StdAfx.h часто возникают на этапе запуска MSI Afterburner, но также могут возникать во время работы программы. Эти типы ошибок H также известны как «ошибки выполнения», поскольку они возникают во время выполнения MSI Afterburner. К числу наиболее распространенных ошибок выполнения StdAfx.h относятся:

  • Не удается найти StdAfx.h.
  • StdAfx.h — ошибка.
  • Не удалось загрузить StdAfx.h.
  • Ошибка при загрузке StdAfx.h.
  • Не удалось зарегистрировать StdAfx.h / Не удается зарегистрировать StdAfx.h.
  • Ошибка выполнения — StdAfx.h.
  • Файл StdAfx.h отсутствует или поврежден.

Библиотека времени выполнения Microsoft Visual C++

Программа: C:Program Files (x86)MSI AfterburnerSDKSamplesSharedMemoryMACMSharedMemorySampleStdAfx.h

Среда выполнения получила запрос от этого приложения, чтобы прекратить его необычным способом.
Для получения дополнительной информации обратитесь в службу поддержки приложения.

В большинстве случаев причинами ошибок в H являются отсутствующие или поврежденные файлы. Файл StdAfx.h может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с MSI Afterburner) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла StdAfx.h может быть вызвано отключением питания при загрузке MSI Afterburner, сбоем системы при загрузке или сохранении StdAfx.h, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.

Не удается открыть файл include: ‘stdio.h’ — Visual Studio Community 2017-ошибка C++

Я пытаюсь создать решение в Visual Studio Community 2017, но я продолжаю получать ошибку»не удается открыть файл include: ‘stdio.h’ «. Я прочитал несколько подобных вопросов, но все еще не могу решить эту проблему. Похоже на С stdio.h файл вызывается в stdafx.h. Ниже приведены более подробные сведения. Есть предложения? (Я еще не могу вставлять изображения, поэтому, пожалуйста, нажмите на ссылки для скриншотов.)

: ‘С stdio.h’: нет такого файла или каталога. Полная Ошибка:

детали устранения неполадок / вещи, которые я пробовал:

  1. свойства конфигурации > каталоги VC++
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
  2. скриншот: Обозреватель решений (файлы в проекте)

код stdafx.cpp:

код stdafx.h:

include stdafx h ошибка

Вот программа helloworld.cpp, которую я написал на основе учебника:

когда я скомпилировал (gcc -Wall hello.cpp) я получаю ошибку:

Другие решения

Две проблемы:
а) stdafx.h не нужен (как отмечали другие).
б) «end1» должно быть «endl» (обратите внимание на букву «l» вместо числа «1»).

stdafx.h это предварительно скомпилированный заголовочный файл, специфичный для Visual Studio.
Файл скомпилированного заголовка бесполезен, если вы не столкнетесь с медленным временем компиляции. В вашей программе они вам вообще не нужны, так что вы можете удалить это, и все будет хорошо.

Вы можете догадаться, если это не нужно, то почему мы их включаем?

Этот процесс повторяется для каждого файла CPP с включенным заголовочным файлом.

В случае, если у вас есть 1000 файлов CPP в проекте, который должен включать заголовочный файл xyz.h, компилятор скомпилирует xyz.h подать 1000 раз. это может занять заметное время.

Чтобы избежать этого, компилятор дает нам возможность «предварительно скомпилировать» заголовочный файл, чтобы он компилировался только один раз, чтобы ускорить время компиляции.

2 ответа 2

Это особенность Visual Studio, которая может ускорять сборку проекта. Начинающих только сбивает с толку. Рекомендую её просто отключить, только и всего. Тогда все будет работать как по учебнику.

Для этого зайдите в свойства проекта (правая кнопка по проекту в solution explorer, properties) и в Precompiled Headers отключите их как показано на рисунке:

include stdafx h ошибка

include stdafx h ошибка

Понять почему она возникает:
— запустить компиляцию с опцией -v: gcc -v helloworld.c -o helloworld
— найти в выводе строки

Что включать в stdafx.h

Это очень важный момент. Бездумное включение в «stdafx.h» всего подряд не только не ускорит компиляцию, но и наоборот замедлит её.

Все файлы, включающие «stdafx.h», зависят от его содержимого. Пусть в «stdafx.h» включен файл «X.h». Если вы поменяете хоть что-то в «X.h», это может повлечь полную перекомпиляцию всего проекта.

Включайте в «stdafx.h» только те файлы, которые никогда не изменяются или меняются ОЧЕНЬ редко. Хорошими кандидатами являются заголовочные файлы системных и сторонних библиотек.

Если включаете в «stdafx.h» собственные файлы из проекта, соблюдайте двойную бдительность. Включайте только те файлы, которые меняются очень-очень редко.

Если какой-то *.h файл меняется раз в месяц, это уже слишком часто. Как правило, редко удаётся сделать все правки в h-файле с первого раза. Обычно требуется 2-3 итерации. Согласитесь, 2-3 раза полностью перекомпилировать весь проект — занятие неприятное. Плюс полная перекомпиляция потребуется всем вашим коллегам.

Не увлекайтесь с неизменяемыми файлами. Включайте только то, что действительно часто используется. Нет смысла включать <set>, если это нужно только в двух местах. Там, где нужно, там и подключите этот заголовочный файл.

Cannot open include file: ‘stdio.h’ — Visual Studio Community 2017 — C++ Error

I am trying to Build a Solution on Visual Studio Community 2017, but I keep getting the error «Cannot open include file: ‘stdio.h’ «. I’ve read through several similar questions, but still can’t fix this problem. Looks like the stdio.h file is called in the stdafx.h file. Below are more details. Any suggestions? (I can’t embed images yet, so please click on the links for screenshots.)

System details: Windows 10
Visual Studio Community 2017 v.15.2 (26430.6)
— Installed Desktop Development with C++ (Screenshot: Installation list)

Step 1: I wrote the famous Hello World program in C++.

Step 2: I clicked on Build > Build Solution.

Problem: ‘stdio.h’: No such file or directory. Full Error:

Troubleshooting details/Things I’ve tried:

  1. Configuration Properties > VC++ Directories
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
  2. Screenshot: Solution Explorer (files in the project)

Code in stdafx.cpp file:

Code in stdafx.h file:

Создан 27 май. 17 2017-05-27 17:41:03 dahiana

Well, start by removing the stdafx.h include since it is non-standard and complete *unnecessary* in VS2017. – DeiDei 27 май. 17 2017-05-27 17:43:39

Disable precompiled header and remove stdafx*. – user2672107 27 май. 17 2017-05-27 18:14:06

Either way this is actually a bit weird, as must exist and work in any correctly configured compiler, even in C++ mode. – Paul Stelian 27 май. 17 2017-05-27 20:19:15

@PaulStelian if that’s the case, perhaps my error was mostly caused by my Windows SDK install not working well with my Visual Studio install. See answer below. – dahiana 27 май. 17 2017-05-27 20:47:50

3 ответа

There are three ways to solve this issue.

Reinstall Visual Studio
This also worked for me, because I realized that maybe there was something wrong with my Windows SDK. I was using Windows 10, but with Windows SDK 8.1. You may have this problem as well.
Steps: Open Visual Studio Installer > Click on the three-lined Menu Bar > Uninstall > Restart your computer > Open Visual Studio Installer > Install what you want, but make sure you install only the latest Windows SDK 10, not multiple ones nor the 8.1.

The first time I installed Visual Studio, I would get an error stating that I needed to install Windows SDK 8.1. So I did, through Visual Studio Installer’s Modify option. Perhaps this was a problem because I was installed it after Visual Studio was already installed, or because I needed SDK 10 instead. Just to be safe I did a complete reinstall.

Создан 27 май. 17 2017-05-27 20:44:38 dahiana

Got same problem with project porting from VS2013 to VS2017,
Fix: change «Properties->General->Windows SDK Version» to 10

That worked fo me. Thanks! I would also add that these properties can be reached by right clicking on the project in the solution explorer. – Vardit 18 июл. 17 2017-07-18 04:26:49

Faced the problem of missing stdlib.h and stdio.h (and maybe more) after installing VS2017 Community on a new computer and migrating a solution from VS2013 to VS2017.

Used @Maxim Akristiniy’s proposal, but still got error message regarding toolset compatibility. However VS itself suggested to do solution retarget by right-clicking on the solution in Solution Explorer, then selecting Retarget solution from the menu and the updated Windows SDK Version from the drop-down list.

Now my projects build w/o a problem.

Note that you may need to make the project your startup project for the retargeting to catch.

Создан 20 июл. 17 2017-07-20 21:37:55 ysap

Читайте также: