Ошибка сборки Qt c WinDBus
От: Илья Сивков Россия http://ilyasivkov.narod.ru
Дата: 12.01.13 07:14
Оценка:
Здравствуйте!

При сборке примера RemoteCarController вылезает сообщение:
moc_car_adaptor_p.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QDBusAbstractAdaptor::staticMetaObject" (?staticMetaObject@QDBusAbstractAdaptor@@2UQMetaObject@@B)


Как собирал Qt:
Файлы E:\qt\4.6.4\msvc2008\lib\QtDBus(d)4.(lib|dll) появились, но сборка вылетела:
   Creating library ..\..\..\..\plugins\script\qtscriptdbusd4.lib and object ..\
..\..\..\plugins\script\qtscriptdbusd4.exp
main.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QDBusConnection::staticMetaObject" (?staticMetaObject@QDBusConnection@@2UQMetaObject@@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QDBusConnectionInterface::staticMetaObject" (?staticMetaObject@QDBusConnectionInterface@@2UQMetaObject@@B)
main.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QDBusAbstractInterface::staticMetaObject" (?staticMetaObject@QDBusAbstractInterface@@2UQMetaObject@@B)
..\..\..\..\plugins\script\qtscriptdbusd4.dll : fatal error LNK1120: 3 unresolved externals


Ничего не понимаю...

Заранее спасибо!
qt qtdbus dbus windbus lnk2001 staticmetaobject
Re: Ошибка сборки Qt c WinDBus
От: Илья Сивков Россия http://ilyasivkov.narod.ru
Дата: 14.01.13 10:32
Оценка:
Отвечаю сам себе: дело было в объявлении QDBUS:
#if defined(QDBUS_MAKEDLL)
# define QDBUS_EXPORT Q_DECL_EXPORT
#elif defined(QT_SHARED)
# define QDBUS_EXPORT Q_DECL_IMPORT
#else
# define QDBUS_EXPORT
#endif

Почему-то в приложении QT_SHARED не был объявлен, и QDBUS_EXPORT превращался в ничто.

Проблема решается так:
DEFINES += QT_SHARED


Замечу, что в Qt 4.8.4 всё заработало сразу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.