Я использую Qt 4.7.2 в Fedora 14.
У меня есть рабочая библиотека пользовательских виджетов, которую я пытаюсь интегрировать в Qt Designer.Существует простой базовый класс виджетов, а затем несколько более сложных виджетов, унаследованных от него.Простой виджет прекрасно интегрируется, но у меня есть проблема с более сложными.
Проблема заключается в том, что более сложные требуют специальной структуры, которую им передают при создании.Итак, мой код для создания сложного виджета в плагине:
QWidget *myPlugin::createWidget(QWidget *parent)
{
my_struct *xyz = new my_struct;
return new myWidget("MyWidget",xyz, parent);
}
my_struct - это простая структура в стиле C с целочисленными значениями, двойными числами и массивами.
Затем, когда я запускаю Qt Designer сЭтот плагин я получаю:
/usr/lib64/qt4/bin/designer: symbol lookup error: /usr/lib64/qt4/plugins/designer/libMyPlugin.so: undefined symbol: _ZN8MyWidgetC1E7QStringP17my_structP7QWidget
Я создаю версию выпуска плагина, а не отладочную версию.
Я также попытался определить xyz как переменную статического класса в плагине и простопередавая его адрес конструктору, но я все еще получаю ту же ошибку.
Я также попытался добавить xyx в качестве неиспользуемой статической переменной класса в мой простой виджет, и это не дает ошибку, поэтому ошибка, кажется,исходящий от звонка конструктору myWidget.
Может кто-нибудь помочь мне решить эту проблему?
Спасибо, Арне,
Вы были правы.
Я явно добавил свою библиотеку в файл .pro плагина, и затем он заработал.
Что меня удивляет, как я могу создать плагин без ошибок без библиотеки?И почему мой простой виджет работал без библиотеки?