Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Сборка QT DLL


Автор: Artemon 24.9.2009, 19:36
Собрал dll из исходников, в данной dll используются классы наследованные от QObject все норм собралось. Все классы в данной DLL сделал экспортируемыми.

Начал собирать вторую dll, в которой используется первая и тут мне linker постоянно выдает ошибку о том, что нет реализации метода MyClass::staticMetaObject.
Я взял и включил в проект moc файлы, сгенерированный от первой dll и все слинковалось.

Вопрос: почему moc файлы не слинковались в первую dll ?

Это обычная практика, или нужно что-то дополнительно указать, чтобы moc файлы линковались вместе с остальными классами ?

P.S
VS2005 + Qt 4.3 Коммерческая + интегратор для VS2005

Добавлено через 14 минут и 56 секунд
Похоже я ошибся, moc линкуется вместе с классом, но тогда вопрос почему компилятор ругается, что не хватает реализации метода (который как раз в moc) ?

Автор: Artemon 24.9.2009, 20:49
Вношу поправку, линкер не видит реализацию КЛАССА class QMetaObject staticMetaObject.

Посмотрел что за класс, оказывается это системный класс Qt.


Вот так выглядит сообщение об ошибке.

Код

Error    3    error LNK2001: unresolved external symbol "public: static struct QMetaObject const aCfg::staticMetaObject" (?staticMetaObject@aCfg@@2UQMetaObject@@B)    aext_meta.obj    


Почему данное сообщение пропадает, когда я добавляю к проекту Moc файл, ведь в этом файле нет реализации данного класса. В нем содержится только инициализация структуры, следующего вида:

Код

const QMetaObject aCfg::staticMetaObject = 
{
     { 
     &QObject::staticMetaObject, 
     qt_meta_stringdata_aCfg,
     qt_meta_data_aCfg, 
     0 
     }
};


Автор: andrew_121 25.9.2009, 21:48
исходник скорми moc-у

Автор: Artemon 26.9.2009, 09:11
Дело в том, что они и так скармливаются и генерируется куча файлов типа myclass_moc.cpp.
В этих moc файлах караз таки и есть staticMetaObject.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)