2015-06-30 2 views
0

У меня есть проект, сгенерированный из файла .pro. Я не могу скомпилировать его, потому что файлы MOC не генерируются.Создание файла MOC в VS2013

  • Q_OBJECT используется в заголовках классов быть MOCed
  • #pragma once используется в заголовках классов быть MOCed

Я поставил многословие в Детальные, и я могу видеть, что MOC называется на правых классах. Затем, есть следующее сообщение об ошибке: standard input(0): Note: No relevant classes found. No output generated.

Наконец, компилятор не может связать MOC файлы, а также построить не удается:

8> moc_myClass.cpp 
8>c1xx : fatal error C1083: Cannot open source file: 
'D:\Things\\L_build\Stuff\moc\moc_myClass.cpp': No such file or directory 

Любой ключ?

+0

Есть ли у вас какая-либо «нетрадиционная» команда препроцессора в файле заголовок, и являются Q_OBJECT макро в правильном месте? (Сравните с некоторыми примерами файлов) – hmuelner

+0

Получают ли эти классы в конечном счете из 'QObject'? Является ли макрос 'Q_OBJECT' * внутренним * по крайней мере одного класса, который происходит из' QObject'? Оба должны выполняться для moc для генерации вывода. Этот вопрос сейчас немного не соответствует теме, поскольку нет кода, который воспроизводит проблему. –

+0

«Q_OBJECT используется в заголовках для классов, которые должны быть MOCed». Он предполагается использовать внутри деклараций каждого класса, который происходит из 'QObject', а не только где-то в заголовке. 'Q_OBJECT' расширяет декларацию члена' staticMetaObject'. Таким образом, он имеет смысл только внутри декларации класса и будет игнорироваться moc иначе. –

ответ

10

я решить эту проблему с помощью этих двух шагов: 1. удалить Q_OBJECT и восстановить 2. добавить Q_OBJECT и восстановить снова

+0

Для справок в будущем: также может потребоваться удалить файл 'moc_XYZ' в разделе« Сгенерированные файлы »в Visual Studio, а затем очистить и перестроить. – user35443

Смежные вопросы