Member 14052778 Ответов: 2

Как избежать этих ошибок?


Ошибка C1083 не удается открыть предварительно скомпилированный заголовочный файл: '.\Debug\D25.pch': такого файла или каталога нет

Что я уже пробовал:

Ошибку lnk2019 неразрешенный внешний символ "ключевое слово__declspec(DllImport) и общественности: статическая структура по cruntimeclass * __cD25Dlg нарушением соглашения о стандартном::GetThisClass(ничтожным)" (__бесенок_?GetThisClass@cD25Dlg@@SGPAUCRuntimeClass@@ХZ), на которые ссылается функция "защищен: длинный __thiscall cSettings297Frame::OnRequestShowTab(беззнаковый инт,Лонг)" (?OnRequestShowTab@cSettings297Frame@@IAEJIJ@з)

2 Ответов

Рейтинг:
17

MadMyche

Щелкните правой кнопкой мыши на проекте в обозревателе решений.

Перейдите в раздел " свойства "всех конфигураций.

Откройте дерево для C/C++ , а затем предварительно скомпилированные заголовки. Выберите Использовать {/Yu}

Заполните поле заголовочного файла - ваше значение по умолчанию должно быть что-то вроде pch.h

Убедитесь, что ваши заголовочные файлы содержат pch.h и что ваш #include отредактирован правильно

Убедитесь, что у вас есть pch.cpp файл в проекте. Создавайте, если нет. Должно содержать только #include pch.h вверху
Просмотр свойств >AllConfigs в этом файле. Выберите PreCompiled Header Create {/Yc}. Это будет привязано только к pch.cpp

Убедитесь, что #include pch.h является первой строкой всех исходных файлов.


Рейтинг:
0

Richard MacCutchan

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

Вторая ошибка указывает на то, что компоновщик не может найти определение cD25Dlg::GetThisClass Возможно, из-за первой ошибки, возможно, из-за того, что один исходный модуль не компилировался.


Member 14052778

можете ли вы объяснить, как воссоздать предварительно скомпилированные заголовки?

Richard MacCutchan

См. выше решение.

MadMyche

Спасибо

Richard MacCutchan

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

MadMyche

Еще раз спасибо, я не подумал об этом до того, как проголосовал за твое предложение