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

Обновлено: 30.06.2024

(computing) Для предварительной компиляции. Чтобы выполнить предварительное преобразование перед окончательным преобразованием.

Что делает предварительная компиляция?

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

Что такое предварительно скомпилированный код?

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

Определение: «Stdafx.h» — это предварительно скомпилированный заголовок. Предварительно скомпилированный означает, что после компиляции нет необходимости компилировать снова. стандартный формат h в основном используется в Microsoft Visual Studio, чтобы сообщить компилятору, что файлы уже скомпилированы и нет необходимости компилировать их с нуля.

Что означает Stdafx?

h (названный stdafx.h до Visual Studio 2017) — это файл, созданный мастером Microsoft Visual Studio IDE, который описывает как стандартные системные, так и специфичные для проекта включаемые файлы, которые часто используются, но почти никогда не изменяются. AFX в stdafx. h обозначает расширения фреймворка приложения.

Почему в настоящих словарях есть поддельные слова

Найдено 32 похожих вопроса

Что такое PCH h в Visual Studio?

pch означает предварительно скомпилированный заголовок. В компьютерном программировании предварительно скомпилированный заголовок представляет собой файл заголовка (C или C++), который скомпилирован в промежуточную форму, которая быстрее обрабатывается компилятором. . В Visual Studio предварительно скомпилированный заголовок обычно называется "pch.

Стоит ли предварительно скомпилированные заголовки?

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

Что такое Разрешить обновление этого предварительно скомпилированного сайта?

Разрешить обновление предварительно скомпилированного сайта

ascx и . мастер-файлы) копируются как есть в целевую папку и могут быть обновлены как текстовые файлы без перекомпиляции проекта. В противном случае разметка HTML для страниц и пользовательских элементов управления удаляется и компилируется в выходные данные сборки.

Почему предварительно скомпилированные заголовки плохи?

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

Где находится Stdafx H?

Наиболее распространенным является включение его для ВСЕХ исходных файлов на уровне конфигурации проекта, в разделе «Свойства конфигурации/C++/Предварительно скомпилированные заголовки», установив «Предварительно скомпилированный заголовок», выберите «Использовать». То же самое место, установка "Предварительно скомпилированный файл заголовка", обычно "stdafx.h".

Как использовать Stdafx h в Visual Studio?

Настройте Visual Studio для создания предварительно скомпилированных заголовков

выберите «Все конфигурации», затем перейдите в C/C++ -> Предварительно скомпилированные заголовки, выберите «Создать предварительно скомпилированный заголовок», убедитесь, что stdafx. h – это заголовочный файл, а для остальных оставьте значения по умолчанию.

Что такое Targetver H?

h и SDKDDKVer. h используются для управления тем, какие функции, константы и т. д. включаются в ваш код из заголовков Windows в зависимости от ОС, которую вы хотите поддерживать в своей программе. Я верю, что таргетвер. h устанавливает по умолчанию использование последней версии Windows, если определения не указаны где-либо еще.

1 ответ. 1. 30. pch означает предварительно скомпилированный заголовок. В компьютерном программировании предварительно скомпилированный заголовок представляет собой файл заголовка (C или C++), который скомпилирован в промежуточную форму, которая быстрее обрабатывается компилятором.

Как мне избавиться от PCH H?

Чтобы отключить предварительно скомпилированные заголовки

Выберите страницу свойств Свойства конфигурации > C/C++ > Предварительно скомпилированные заголовки. В списке свойств выберите раскрывающийся список для свойства «Предварительно скомпилированные заголовки», а затем выберите «Не использовать предварительно скомпилированные заголовки». Нажмите OK, чтобы сохранить изменения.

Как использовать PCH h в Visual Studio?

Как вы используете PCH?

  1. Перейдите к свойствам проекта, C/C++|PCH установите для параметра «Предварительно скомпилированный заголовок» значение «Использовать». .
  2. Перейдите к свойствам файла cpp, который вы хотите использовать в качестве PCH, и установите для параметра "Предварительно скомпилированный заголовок" значение "Создать" (по умолчанию для него будет установлено значение "Использовать" в настройках свойств проекта).

Как работает Pragma Once?

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

Как сделать предварительно скомпилированный заголовок?

Чтобы создать предварительно скомпилированный заголовочный файл, просто скомпилируйте его, как и любой другой файл, при необходимости используя параметр -x, чтобы драйвер воспринимал его как заголовочный файл C или C++. Вы можете использовать такой инструмент, как make, чтобы обновлять предварительно скомпилированный заголовок при изменении содержащихся в нем заголовков.

Где CMake ищет включаемые файлы?

cmake сначала ищется в CMAKE_MODULE_PATH , а затем в каталоге модулей CMake. Есть одно исключение: если файл, который вызывает include(), находится в каталоге встроенного модуля CMake, то сначала выполняется поиск в каталоге встроенного модуля CMake, а затем CMAKE_MODULE_PATH.

Нужен ли Stdafx H?

stdafx. ч не является строго необходимым. Как отмечали другие: если вам не нужны предварительно скомпилированные заголовки, вам действительно не нужен stdafx.

Что такое файл .PCH?

pch-файл? А . pch — предварительно скомпилированный заголовок. В языках программирования C и C++ заголовочный файл – это файл, текст которого может быть автоматически включен препроцессором C в другой исходный файл, что обычно указывается с помощью директив компилятора в исходном файле.

Как открыть файл PCH?

Если вы не можете правильно открыть файл PCH, попробуйте щелкнуть правой кнопкой мыши или нажать и удерживать файл. Затем нажмите «Открыть с помощью» и выберите приложение. Вы также можете отобразить файл PCH непосредственно в браузере: просто перетащите файл в это окно браузера и отпустите его.

Как добавить файл заголовка в Visual Studio?

Когда я создаю свое решение на C++ в Visual Studio, оно жалуется, что отсутствует файл xxxxx.pch. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?

вот точная ошибка для полноты картины:

вы должны предоставить больше информации. какую именно ошибку вы получаете? как сейчас настроен ваш проект?

13 ответов 13

ПРИМЕЧАНИЕ. Более поздние версии IDE могут использовать "pch" вместо "stdafx" в именах по умолчанию для связанных файлов. В приведенных ниже инструкциях может потребоваться заменить stdafx на pch. Я извиняюсь. Это не моя вина.

  1. Щелкните правой кнопкой мыши свой проект в обозревателе решений.
  2. Нажмите "Свойства" в нижней части раскрывающегося меню.
  3. В левом верхнем углу страницы свойств выберите "Все конфигурации" в раскрывающемся меню.
  4. Откройте дерево C/C++ и выберите Предварительно скомпилированные заголовки.
  5. Предварительно скомпилированный заголовок: выберите «Использовать» (/Yu)
  6. Заполните поле Предварительно скомпилированный файл заголовка. Стандарт — stdafx.h

Повезло 13. Скрестите пальцы и нажмите "Создать".

Это более простой ответ, чем мой. Шаги 1-7 необходимы для работы PCH, но сообщение об ошибке из вопроса указывает на то, что эти шаги уже были выполнены. OTOH, он предполагает наличие одного файла stdafx.pch, а xxxxx.pch из вопроса намекает на более сложную проблему (настройка нескольких PCH).

Использование предварительно скомпилированного заголовка (pch) представляет собой двухэтапный процесс.

На первом этапе вы компилируете файл-заглушку (в VS200x он обычно называется stdafx.cpp . В более новых версиях используется pch.cpp .). Этот файл-заглушка косвенно включает только те заголовки, которые вы хотите предварительно скомпилировать. Как правило, в одном небольшом заголовке (обычно stdafx.h или pch.hpp) перечислены стандартные заголовки, такие как и , которые затем включаются в файл-заглушку. При компиляции создается файл .pch.

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

В вашем случае кажется, что шаг 1 не выполняется. Файл-заглушка все еще присутствует? В вашем случае это, вероятно, будет xxxxx.cpp . Это должен быть файл, скомпилированный с параметром /Yc:xxxxx.pch, так как это флаг компилятора, указывающий, что это шаг 1 процесса PCH. Если xxxxx.cpp присутствует и является таким файлом-заглушкой, то, вероятно, отсутствует параметр компилятора /Yc:.

Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.

Ссылка на главную страницу Visual Studio

Отвечает:

Вопрос

В моем проекте мне нужно объединить проект MFCaptureD3D (полностью с github) с другим проектом на C++, который я написал на 95% сам около 2 лет назад. Этот проект, второй, был сделан под Ubuntu 14.4, и это Linux. MFCaptureD3D теперь работает под Windows 10, Microsoft C++. Итак, я добавил код Linux C++ в проект MFCaptureD3D, и теперь все они являются частью одного решения. При компиляции я получаю много странных ошибок. Это относится к заголовочному файлу pch.h. Есть еще пч.cpp в решении.

Я хочу сказать, что именно компилятор добавил оба файла, когда я собирал решение. Они содержат только пару строк кода и комментарии о том, что эти файлы «могут быть проигнорированы» или что-то в этом роде. Тем не менее мне нужно объяснение этой ошибки компиляции:

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

Ответы

Учитывая тот факт, что вы упомянули файл pch.cpp, а в сообщении об ошибке указано, что файл имеет расширение .c, я бы сказал, что предварительно скомпилированный заголовок создается для C++, но затем вы используете его в C исходный файл.

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

Эта ссылка дает правильное решение:

Это параметр свойств в Visual Studio 2019.

Это параметр свойств в Visual Studio 2017:

Значит, он определенно существует.

Помните, что вам нужно щелкнуть правой кнопкой мыши на отдельном исходном файле и выбрать "Свойства", чтобы получить эту опцию.

Это подпись. Любые приведенные примеры не предназначены для проверки ошибок или демонстрации лучших практик. Они предназначены только для того, чтобы проиллюстрировать точку зрения. Я также могу дать неэффективный код или представить некоторые проблемы, чтобы препятствовать копированию/вставке кода. Это потому, что основная цель моих сообщений — помочь в процессе обучения.

Сначала немного истории. Когда Microsoft впервые разработала компилятор C++, процессоры не были такими быстрыми, как сейчас. Компилятор был недостаточно быстр, и они не могли выпустить продукт с плохой производительностью. Затем кому-то пришла в голову идея предварительно скомпилированных заголовков, и это имело большой успех, они могли выпустить компилятор.

Изначально по умолчанию использовались имена stdafx.h и stdafx.cpp. У многих людей были проблемы с ними, и многие разработчики просто отключили их. Я изо всех сил пытался научиться их использовать, и я знаю, что Microsoft не документировала должным образом их использование. Недавно Microsoft явно изменила имена по умолчанию на pch.h и pch.cpp.

Следующее относится к VS 2017, и я предполагаю, что то же самое в VS 2019.

  • в свойствах проекта для "C/C++" | "Предварительно скомпилированные заголовки" задайте для параметра "Предварительно скомпилированный заголовок" значение "Использовать (/Yu)"
  • в свойствах файла pch.cpp установите для параметра "Предварительно скомпилированный заголовок" значение "Создать (/Yc)" только для этого файла.

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

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

Параметры компилятора для предварительно скомпилированных заголовков — /Y . На страницах свойств проекта параметры расположены в разделе «Свойства конфигурации» > «C/C++» > «Предварительно скомпилированные заголовки». Вы можете отказаться от использования предварительно скомпилированных заголовков и указать имя файла заголовка, а также имя и путь к выходному файлу.

Пользовательский предварительно скомпилированный код

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

Когда прекомпилировать исходный код

Предварительно скомпилированный код полезен в цикле разработки для сокращения времени компиляции, особенно если:

Вы всегда используете большой объем кода, который редко меняется.

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

Первая компиляция (та, которая создает предварительно скомпилированный заголовочный файл) занимает немного больше времени, чем последующие компиляции.Последующие компиляции могут выполняться быстрее за счет включения предварительно скомпилированного кода.

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

Хотя вы можете использовать только один предварительно скомпилированный файл заголовка ( .pch ) для каждого исходного файла, вы можете использовать несколько файлов .pch в проекте.

Два варианта предварительной компиляции кода

Вы можете предварительно скомпилировать любой код C или C++; вы не ограничены предварительной компиляцией только файлов заголовков.

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

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

Параметры предварительно скомпилированного заголовка: /Yc (создать файл предварительно скомпилированного заголовка) и /Yu (использовать файл предварительно скомпилированного заголовка). Используйте /Yc для создания предварительно скомпилированного заголовка. При использовании с опциональной прагмой hdrstop параметр /Yc позволяет выполнять предварительную компиляцию как файлов заголовков, так и исходного кода. Выберите /Yu, чтобы использовать существующий предварительно скомпилированный заголовок в существующей компиляции. Вы также можете использовать /Fp с параметрами /Yc и /Yu, чтобы указать альтернативное имя для предварительно скомпилированного заголовка.

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

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

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

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

Параметр компилятора /Yu позволяет указать, какой файл PCH использовать.

При использовании файла PCH компилятор предполагает ту же среду компиляции (в которой используются согласованные параметры компилятора, прагмы и т. д.), которая действовала при создании файла PCH, если не указано иное. Если компилятор обнаруживает несоответствие, он выдает предупреждение и идентифицирует несоответствие, где это возможно. Такие предупреждения не обязательно указывают на проблему с файлом PCH; они просто предупреждают вас о возможных конфликтах. Требования к согласованности файлов PCH описаны в следующих разделах.

Согласованность параметров компилятора

Следующие параметры компилятора могут вызывать предупреждение о несогласованности при использовании файла PCH:

Макросы, созданные с использованием параметра препроцессора ( /D ), должны совпадать между компиляцией, создавшей файл PCH, и текущей компиляцией. Состояние определенных констант не проверяется, но изменение этих макросов может привести к непредсказуемым результатам.

Файлы PCH не работают с параметрами /E и /EP.

Файлы PCH должны быть созданы с использованием параметра «Создать информацию о просмотре» ( /FR ) или параметра «Исключить локальные переменные» ( /Fr ), прежде чем последующие компиляции, использующие файл PCH, смогут использовать эти параметры.

Совместимость с C 7.0 ( /Z7 )

Если этот параметр действует при создании файла PCH, последующие компиляции, использующие файл PCH, могут использовать отладочную информацию.

Если параметр C 7.0-Compatible ( /Z7 ) не действует при создании файла PCH, последующие компиляции, использующие файл PCH и /Z7, вызывают предупреждение. Отладочная информация помещается в текущий файл .obj, а локальные символы, определенные в файле PCH, недоступны отладчику.

Включить согласованность пути

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

Консистентность исходного файла

При указании параметра «Использовать предварительно скомпилированный файл заголовка» ( /Yu ) компилятор игнорирует все директивы препроцессора (включая прагмы), которые появляются в исходном коде, который будет предварительно скомпилирован. Компиляция, указанная такими директивами препроцессора, должна быть такой же, как компиляция, используемая для параметра Создать предварительно скомпилированный файл заголовка ( /Yc ).

Согласованность прагмы

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

Эти прагмы влияют только на код в файле PCH; они не влияют на код, который позже использует файл PCH:

Эти прагмы сохраняются как часть предварительно скомпилированного заголовка и влияют на оставшуюся часть компиляции, в которой используется предварительно скомпилированный заголовок:

alloc_text
auto_inline
check_stack
code_seg
data_seg

функция
include_alias
init_seg
inline_depth

inline_recursion
внутренняя
оптимизация
pack

pointers_to_members
setlocale
vtordisp
предупреждение

Правила согласованности для /Yc и /Yu

При использовании предварительно скомпилированного заголовка, созданного с помощью /Yc или /Yu, компилятор сравнивает текущую среду компиляции с той, которая существовала на момент создания файла PCH. Обязательно укажите среду, совместимую с предыдущей (используя согласованные параметры компилятора, прагмы и т. д.) для текущей компиляции. Если компилятор обнаруживает несоответствие, он выдает предупреждение и идентифицирует несоответствие, где это возможно. Такие предупреждения не обязательно указывают на проблему с файлом PCH; они просто предупреждают вас о возможных конфликтах. В следующих разделах объясняются требования к согласованности для предварительно скомпилированных заголовков.

Согласованность параметров компилятора

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

Опция Имя Правило
/D Определить константы и макросы Должен быть одинаковым между компиляцией, которая создала предварительно скомпилированный заголовок, и текущей компиляцией. Состояние определенных констант не проверяется. Однако возможны непредсказуемые результаты, если ваши файлы зависят от значений измененных констант.
/E или /EP Копировать вывод препроцессора в стандартный вывод Предварительно скомпилированные заголовки не работают с параметрами /E или /EP.
/Fr или /FR Создать Microsoft Информация об исходном браузере Чтобы параметры /Fr и /FR были допустимыми с параметром /Yu, они также должны были действовать при создании предварительно скомпилированного заголовка. Последующие компиляции, использующие предварительно скомпилированный заголовок, также генерируют информацию об исходном браузере. Информация о браузере помещается в один файл .sbr, и на нее ссылаются другие файлы так же, как на информацию CodeView. Вы не можете переопределить размещение информации об исходном браузере.
/GA , /GD , /GE , /Gw или /GW Протокол Windows options Должны быть одинаковыми между компиляцией, создавшей предварительно скомпилированный заголовок, и текущей компиляцией. Если эти параметры различаются, появляется предупреждающее сообщение.
/Zi Создать полную отладочную информацию Если этот параметр включен когда создается предварительно скомпилированный заголовок, последующие компиляции, использующие предварительную компиляцию, могут использовать эту отладочную информацию. Если параметр /Zi не действует при создании предварительно скомпилированного заголовка, последующие компиляции, использующие предварительную компиляцию и параметр /Zi, вызывают предупреждение. Отладочная информация помещается в текущий объектный файл, а локальные символы, определенные в предварительно скомпилированном заголовке, недоступны для отладчика.

Предварительно скомпилированные заголовки предназначены для использования только в исходных файлах C и C++.

Использование предварительно скомпилированных заголовков в проекте

В предыдущих разделах представлен обзор предварительно скомпилированных заголовков: /Yc и /Yu, параметра /Fp и прагмы hdrstop. В этом разделе описывается метод использования в проекте опций предварительно скомпилированного заголовка вручную; он заканчивается примером make-файла и кодом, которым он управляет.

Чтобы узнать о другом подходе к использованию параметров предварительно скомпилированного заголовка вручную в проекте, изучите один из make-файлов, расположенных в каталоге MFC\SRC, который создается во время установки Visual Studio по умолчанию. Эти make-файлы используют подход, аналогичный представленному в этом разделе. Они лучше используют макросы Microsoft Program Maintenance Utility (NMAKE) и обеспечивают больший контроль над процессом сборки.

Файлы PCH в процессе сборки

Код программного проекта часто содержится в нескольких исходных файлах C или C++, объектных файлах, библиотеках и файлах заголовков. Обычно makefile координирует комбинацию этих элементов в исполняемый файл. На следующем рисунке показана структура make-файла, в котором используется предварительно скомпилированный заголовочный файл. Имена макросов NMAKE и имена файлов на этой диаграмме соответствуют именам в примере кода, найденном в Примере make-файла для PCH и Примере кода для PCH.

На рисунке используются три схематических устройства, чтобы показать поток процесса сборки. Именованные прямоугольники представляют каждый файл или макрос; три макроса представляют один или несколько файлов. Заштрихованные области представляют каждое действие компиляции или компоновки. Стрелки показывают, какие файлы и макросы объединяются в процессе компиляции или компоновки.


Структура make-файла, в котором используется предварительно скомпилированный заголовочный файл

Начиная с верхней части диаграммы, и STABLEHDRS, и BOUNDRY являются макросами NMAKE, в которых вы перечисляете файлы, которые вряд ли потребуют перекомпиляции. Эти файлы компилируются командной строкой

CL /c /W3 /Yc$(BOUNDRY) applib.cpp myapp.cpp

только если предварительно скомпилированный заголовочный файл ( STABLE.pch ) не существует или если вы вносите изменения в файлы, перечисленные в двух макросах. В любом случае предварительно скомпилированный заголовочный файл будет содержать код только из файлов, перечисленных в макросе STABLEHDRS. Укажите последний файл, который вы хотите предварительно скомпилировать, в макросе BOUNDRY.

Файлы, указанные в этих макросах, могут быть либо заголовочными файлами, либо исходными файлами C или C++. (Один файл PCH нельзя использовать одновременно с исходными кодами C и C++.) Вы можете использовать макрос hdrstop, чтобы остановить предварительную компиляцию в какой-то точке внутри файла BOUNDRY. Дополнительные сведения см. в разделе hdrstop .

Следующий на диаграмме APPLIB.obj представляет код поддержки, используемый в вашем окончательном приложении. Он создается из APPLIB.cpp , файлов, перечисленных в макросе UNSTABLEHDRS, и предварительно скомпилированного кода из предварительно скомпилированного заголовка.

MYAPP.obj представляет ваше окончательное приложение. Он создается из MYAPP.cpp , файлов, перечисленных в макросе UNSTABLEHDRS, и предварительно скомпилированного кода из предварительно скомпилированного заголовка.

Наконец, исполняемый файл ( MYAPP.EXE ) создается путем связывания файлов, перечисленных в макросе OBJS ( APPLIB.obj и MYAPP.obj< /em> ).

Пример make-файла для PCH

В следующем make-файле используются макросы и структура команд управления потоком !IF , !ELSE , !ENDIF для упрощения адаптации к вашему проекту.

Помимо макросов STABLEHDRS , BOUNDRY и UNSTABLEHDRS, показанных на рисунке «Структура файла Makefile, который использует предварительно скомпилированный файл заголовка» в файлах PCH в процессе сборки, этот файл Makefile содержит макрос CLFLAGS и макрос LINKFLAGS. Вы должны использовать эти макросы для перечисления параметров компилятора и компоновщика, которые применяются независимо от того, создаете ли вы отладочную или окончательную версию исполняемого файла приложения. Также есть макрос LIBS, в котором вы перечисляете библиотеки, необходимые для вашего проекта.

В make-файле также используются !IF , !ELSE , !ENDIF для определения того, определяете ли вы символ DEBUG в командной строке NMAKE:

Эта функция позволяет вам использовать один и тот же make-файл во время разработки и для окончательных версий вашей программы. Используйте DEBUG=0 для окончательных версий. Следующие командные строки эквивалентны:

Дополнительную информацию о make-файлах см. в справочнике по NMAKE. См. также параметры компилятора MSVC и параметры компоновщика MSVC.

Пример кода для PCH

Следующие исходные файлы используются в make-файле, описанном в файлах PCH в процессе сборки и Образце make-файла для PCH. Комментарии содержат важную информацию.

Я использую Visual Studio 2013, включая компилятор 120 для VC++. ошибка C1853: Предварительно скомпилированный заголовочный файл «Debug\ABC.pch» взят из предыдущей версии. Но проект не запускается, пока я не скопирую библиотеку в папку решения (даже если он объявлен как статический, объект явно создается как Я могу получить доступ ко всему этому

Подход Microsoft Visual Studio извлекает файл и флаг препроцессора. Поскольку это новый проект и нет существующих источников данных для изменения, это действительно информация о включаемых каталогах, содержащих исходные файлы заголовков, параметры (C/C++ ). Устранение отсутствующих файлов заголовков. Разрешить определения макросов.

Поскольку это новый проект, и нет существующих источников данных для изменения, это действительно Вверху выберите [Исходные файлы][На основе диалога (C/C++)] в кнопке меню. Если ваши файлы заголовков распространяться по каталогу и его подкаталогам (и настройкам (C/C++). Устранение отсутствующих файлов заголовков. Устранение определений макросов.

эта проблема связана с ошибкой, из-за которой ошибки не отображаются в списке ошибок Исправлено в: Visual Studio 2017 версии 15.7windows 10.0visual studio 2017 C:\Users\jalon\Source\Repos\ExpertFSharp\Chapter12\Chapter12.fsproj 1 Я не уверен, связано ли это с этой проблемой, но кажется, что Рослин работает только 22 февраля 2019 года.

не нужно смотреть '*.js' здесь, webpack позаботится об этом за нас, объединив исходные файлы с некоторыми gulp-плагинами, такими как gulp-webpack, возможно, System.import('app').catch(function(err) < console.error(err); >); ВАЖНО: не забудьте закрыть и снова открыть окно powershell, чтобы применить это.

Я новичок в Visual Studio 2017, и у меня возникают трудности с созданием простого проекта. После создания проекта я щелкаю правой кнопкой мыши «Исходные файлы» и добавляю файл с фатальной ошибкой C1083: Не удается открыть исходный файл: «Main.cpp». ': Нет такого файла или исправить эту ошибку, потому что я не хочу хранить свои файлы на диске c.

Когда я запускаю коды в turbo C++ из ресурса, я получаю сообщение, в котором говорится: 1.) Редактирование ошибки: невозможно открыть включаемый файл «RW/RANDOM. Он предшествует STL, поэтому вы, например, не можете использовать . рандом также недоступен. Во-вторых, вы проверили, что они находятся в той же папке, что и ваш main.cpp?

Проект нельзя восстановить традиционным способом (Checkout и Rebuild). GameDev.tv Unreal Courses Ask Build, Intermediate, Saved; Удалите файл решения Visual Studio или Xcode (.SLN orxcodeproj); Повторно откройте Unreal Win64 Development "D:\Unreal Projects\Battle Tank\BattleTank\BattleTank.uproject" -waitmutex

Если вы только начинаете работать с C++, вам может быть интересно, зачем в main.cpp int main() < MyClass a; // Ошибка компилятора: 'MyClass' не идентифицирован return 0; >Файлы заголовков позволяют вам создать интерфейс (в данном случае класс Ничего не делайте, если можете, но если не можете, вперед объявляйте, если можете.

Я только что установил инструменты сборки VS2017 с помощью установщика, поставляемого с VS2019. Не удалось создать с помощью Visual Studio 2017 с помощью «средств сборки Visual Studio 2019». Привет,. Я "C:\Program Files (x86)\Microsoft Visual. Я переустановил его, и теперь я получаю другую ошибку, связанную с версией Windows SDK.

Я использую Visual Studion 2019 для C++ и имею ошибки, связанные с библиотеками. Это несколько ошибок, а всего в каждом проекте их 411. даже с одной строкой cout E1696 не может открыть исходный файл "iostream" E1696 не может открыть исходный файл "string". С++. Комментарий. Комментарий · Скрыть 3. Комментарий.

ОТКРЫТЬ. Я пытаюсь реализовать предварительно скомпилированные заголовки в оболочке, которую я создаю, но мне нужен файл «pch.h» (называйте его как хотите. исходный файл «pch.cpp», куда вы включаете это, а затем в любой другой исходный файл вы включаете «pch.h». Visual Studio теперь не настраивает предварительно скомпилированные заголовки автоматически

Новые комментарии не могут быть опубликованы, а голоса не могут быть отданы. Проверьте команды компиляции или свойства исходного файла в Visual Studio. ИМХО, я бы не стал использовать PCH, так как их легко использовать неправильно, по крайней мере, ограничьте его заголовком STL, а не другим (я часто использую его для создания решений VS2019 из проектов с открытым исходным кодом).

Я новый директор отдела открытых вопросов и ответов в Stack Overflow. Никто не согласился с этой политикой, и они объявили об этом, казалось бы, сотнями пингов Slack. независимо от того, как вы подходите к этому, дюжина людей, указывающих на ваши ошибки, чувствует себя ужасно. Но нам нужно найти способ сделать это, не превращая Open-Source

Установлена ​​Microsoft Visual Studio 2008 Express Edition (C++) Вторая программа с пользовательским заголовочным файлом/пользовательской библиотекой - ошибка. Сообщение об ошибке следующего вида:\playpen2.cpp(3): фатальная ошибка C1083: Не удается открыть включаемый файл: 'playpen.h': Нет такого файла в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)

Новая функция в Visual Studio теперь показывает отдельные списки ошибок, чтобы узнать, как их исправить и вернуть Visual Studio на прямую. Папка Thevs содержит временные данные, связанные с решением, включая файл suo. Jesse C. Slicer Не удается найти его с помощью поиска Windows. , я использую VS2017 Basl 01 октября 2019 г.

Вы не можете использовать сгенерированный предварительно скомпилированный заголовок Visual C++ ".pch", но вы можете использовать заголовок "stdafx.h", который представляет собой обычный файл заголовка. Плюс в том, что я могу использовать проекты Linux с открытым исходным кодом в Windows без конвертации в

У меня есть проект, и я добавляю файл заголовка и исходный файл. Я нашел проблему. Я должен добавить отсутствующую библиотеку DriverLib и включить файлы, как включить/установить DriverLib в CCS7. Я пытался создать старый проект для MCU, но получаю ошибки, потому что.

Указан исходный файл iex_power.c, а также некоторые -I include. Однако, если в вашем файле журнала отсутствуют некоторые флаги компилятора, которые вы хотели бы использовать, в то время как пути к обоим исходным файлам и включаемым каталогам могут быть разрешены .

Как заставить проект найти driverlib.h, если я поместил файлы в подкаталог? Спасибо за Итак, каталог driverlib должен быть добавлен в путь включения. Вверх 0 Вниз driverlib.h. Когда я создаю проект, я получаю ошибку сохранения

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

Я использую Visual Studion 2019 для C++ и имею ошибки, связанные с библиотеками. Это несколько ошибок, а всего в каждом проекте их 411. даже с E1696 нельзя открыть исходный файл "string". С++. Комментарий. Комментарий

Если вы сделали что-то, что явно нарушает правила, выберите вкладку C/C++ > Общие и установите для параметра Рассматривать предупреждения как ошибки значение Да (/WX). Я использую визуальную студию 2019, и когда я нажимаю свойства> общие

Есть ли у вас файлы с именами Derivative.h и Derivative.cpp? И открыть когда откроется main.cpp и написание имён точно cout

Описывает ошибку компоновщика Microsoft C и C++ (MSVC) LNK1104, Не удается открыть приложение или его файл spdb; Не удается открыть файл библиотеки Microsoft; Не удается открыть также см. этот пост о переполнении стека: как заставить Visual Studio использовать

Здравствуйте, я новый студент c plus plus. Буду рад, если кто подскажет, как создать файлы acpp и h для программы. Пусть int main() Можно открыть блокнот (или любой другой текстовый редактор) и сохранить файл с расширением ah.

d:\c++_projects\projekat2010\pr2010\projekat_2010_1.0\concepts\ Итак, что мне делать, если я не могу переместить файл?Почему компилятор просто не говорит: Event.h не может открыть такой файл, а выдает Home page | Политика конфиденциальности

Я также восстановил визуальную студию из установщика, и ничего не изменилось. Кто-нибудь знает, как это исправить? Кроме того, если мне нужно переустановить Visual Studio, мой

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

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

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

заголовки и файлы c находятся в одной папке, я добавил этот путь следующим образом: "$/Includes>". когда я пытаюсь создать программу, я

Исправьте все отсутствующие заголовочные файлы. Окно «Результаты анализа» предлагает несколько различных отображений с помощью меню «Отображение» и соответствующих ему кнопок на панели значков.

Для этой единицы перевода (G:\Unreal\MyProject6\Source\MyProject6\WorldPosition.cpp) загогулины отключены. не удается открыть исходный файл "WorldPosition.generated.h

cpp выдает сообщение «Не удается открыть исходный файл tank.h», не говоря уже о том, когда я пытаюсь добавить Tank и класс ATank в PlayerTankController… Я использую Unreal 4.15.1 и VS

Ваш открытый канал связи с инженерными командами Майкрософт. Выберите страницу Главная Это может быть связано с тем, что у вас нет к ней доступа или она не существует. Пожалуйста, попробуйте еще раз

Шаг 3a. Устранение отсутствующих файлов заголовков. Когда анализатор исходного кода Imagix 4D обрабатывает исходный код, он обрабатывает файлы заголовков так же, как это делает компилятор

Если функция рекурсивно вызывает себя бесконечное количество раз, стек не может хранить большое количество локальных переменных, используемых при каждом вызове функции, и будет

Я так и сделал. Затем я попытался открыть файл UProject из местоположения и получил еще одну ошибку, в которой говорилось, что он не может быть скомпилирован, и я должен попытаться восстановить его

Если дважды щелкнуть строку предупреждения, редактор файлов Imagix 4D откроется в строке 22, похоже, макрос _CONDITIONAL_COMPILE_ не определен.

при включении выдает ошибку и говорит "не удается открыть исходный файл". Почему и что я могу сделать, чтобы это исправить? Я только что скачал VS и сейчас

Файлы заголовков не "связываются". Я думаю, вы пытаетесь сказать, что в вашем проекте есть несколько файлов cpp — main.cpp, simulator.cpp, node.cpp и bgp.

фатальная ошибка C1083: не удается открыть включаемый файл: «xxx.h»: нет такого файла или каталога. У меня есть другой проект, в котором я использую ProjectB без проблем. в

Поэтому я точно следовал видео при использовании предварительных объявлений и т. д., и теперь оно не будет компилироваться. Unreal выдает ошибку в строке 7 файла Tank.h с указанием

Я добавил этот заголовочный файл, используя команду project->добавить существующий элемент. Я также вручную помещаю заголовочный файл в основную папку проекта.

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