При попытке компиляции код выдаёт две ошибки
1>qucs.obj : error LNK2019: unresolved external symbol "int __cdecl qMetaTypeId(void)" (??$qMetaTypeId@UiconCompInfoStruct@@@@YAHXZ) referenced in function "public: void __thiscall QVariant::setValue(struct iconCompInfoStruct const &)" (??$setValue@UiconCompInfoStruct@@@QVariant@@QAEXABUiconCompInfoStruct@@@Z) 1>dialogs.lib(moc_simmessage.obj) : error LNK2019: unresolved external symbol "int __cdecl qMetaTypeId<class SimMessage *>(void)" (??$qMetaTypeId@PAVSimMessage@@@@YAHXZ) referenced in function "private: static void __cdecl SimMessage::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@SimMessage@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z)
но qMetaTypeId и QVariant содержаться в QCore.lib, а структура iconCompInfoStruct объявлена в коде
- использую компилятор microsoft studio 2017,
- библиотека QCore.lib подключена к проекту,
- разрядность библиотек и проекта х32,
- библиотеки и проект собраны для windows 7,
- библиотека собрана в этой же студии,
- рантайм и проекта и библиотек /MD
более того, символы из QT используются и в других частях проекта и нигде более подобных проблем не возникает
UDP: Я решил эту проблему, возможно у кого то она возникнет тоже: в моей версии QT был закомментирован кусок кода в qmetatype.h
template <typename T>
inline Q_DECL_CONSTEXPR int qMetaTypeId()
{
Q_STATIC_ASSERT_X(QMetaTypeId2<T>::Defined, "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system");
return QMetaTypeId2<T>::qt_metatype_id();
}
1731 -- 1736 строки
раскомментирование этой части кода избавило от ошибок и позволило скомпилировать проект