私はFedora14でQt4.7.2を使用しています。
QtDesignerに統合しようとしているカスタムウィジェットの作業ライブラリがあります。単純なウィジェット基本クラスがあり、次にそれを継承するいくつかのより複雑なウィジェットがあります。単純なウィジェットはうまく統合されますが、より複雑なウィジェットには問題があります。
問題は、より複雑なものは、作成時に特別な構造を渡す必要があるという事実に起因します。したがって、プラグインで複雑なウィジェットを作成するための私のコードは次のとおりです。
QWidget *myPlugin::createWidget(QWidget *parent)
{
my_struct *xyz = new my_struct;
return new myWidget("MyWidget",xyz, parent);
}
my_structは、int、double、および配列を使用した単純な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コンストラクターの呼び出しに起因しているようです。
誰かが私がこれを解決するのを手伝ってもらえますか?
ありがとうArne、
あなたは正しかった。
ライブラリをプラグインの.proファイルに明示的に追加したところ、機能しました。
ライブラリなしでエラーなしでプラグインを構築するにはどうすればよいのでしょうか。そして、なぜ私の単純なウィジェットがライブラリなしで機能したのですか?