У меня есть проект Qt с использованием предварительно скомпилированных заголовков (не уверен, что это актуально) в VS2012, и он компилируется и отлично работает. Но когда я пытаюсь скомпилировать один и тот же проект в QtCreator, он показывает ошибки. Прежде всего - оба проекта соответствуют друг другу и ранее были правильно настроены (они были скомпилированы и работали просто отлично). Однако после последних изменений в коде что-то пошло не так.«Идентификатор» уже имеет тело, но идентификатор не найден
Ошибка:
pch.h:34: error:C2084: function 'void handleExceptionByShowingMessage(std::exception &)' already has a body
main.cpp:16: error:C3861: 'handleExceptionByShowingMessage': identifier not found
Они идут на протяжении более 30 линий с другой функцией, определенной в pch.h (встроенная тоже) и еще нескольких CPP файлов. Но все ошибки аналогичны.
От pch.h
:
inline void handleExceptionByShowingMessage(std::exception &e)
{
QMessageBox msgBox;
msgBox.setText(QString::fromUtf16((ushort*)e.what()));
msgBox.setStandardButtons(QMessageBox::Discard);
msgBox.setIcon(QMessageBox::Warning);
int ret = msgBox.exec();
}
Я не вставить вызовы функций из cpp
файлов, так как это просто регулярное использование. Все файлы cpp
содержат pch.h
правильно (первая строка кода), и, как я уже сказал, точно такая же структура кода и файлов работает в VS2012 (чей компилятор, я считаю, QtCreator фактически использует ...).
Если вам нужно больше кода/информации, пожалуйста, дайте мне знать.
Обновление: Да, все заголовки имеют #pragma once
. Интересное уведомление, хотя - когда я переместил эти два определения функций в фиктивный заголовочный файл и включил его в pch.h
, проект был составлен в порядке.
У вас есть охранник или # прагма один раз в вашем pch.h? – slaphappy
Да, конечно. Также, пожалуйста, ознакомьтесь с обновлением моего вопроса. – NPS
Я подозреваю, что 'pch.h' включается дважды - один раз при загрузке предварительно скомпилированных заголовков, один раз при разборе самого файла, который' #pragma once' не будет защищать agaisnt. – slaphappy