我在 Fedora 14 下使用 Qt 4.7.2。
我有一个自定义小部件的工作库,我正在尝试将其集成到 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 文件中,然后它就可以工作了。
令我困惑的是,如果没有库,我如何构建没有错误的插件?为什么我的简单小部件在没有库的情况下也能工作?