2

QApplicationにcommitData()とsaveState()メンバー関数が必要なQGisをコンパイルしたいと思います。考えてみれば、それらはプリプロセッサのifステートメントに入れられます。

#ifndef QT_NO_SESSIONMANAGER
void commitDataRequest(QSessionManager &sessionManager);
void saveStateRequest(QSessionManager &sessionManager);
#endif

ただし、QT_NO_SESSIONMANAGERは定義されており、これらの関数は宣言も定義もされていません。qapplication.hでマクロを#undefすると、未定義の参照エラーが発生しました。ですから、別の方法で問題を解決する必要があるようです。セッションマネージャーはビルド済みのQtライブラリで定義されているため、使用したQt構成に問題があるかどうかは疑問ですが、Qtv4.8.2.2をコンパイルしたQtにはありません。このマクロを定義/定義解除するために、qmakeまたはgccにいくつかの引数を送信する必要がある可能性もあります。ネットとstackoverflowで関連資料をしばらく検索しましたが、答えが見つかりませんでした。

4

1 に答える 1

2

Qt の設定に問題があります。セッション管理サポートなしでコンパイルされた Qt のようです (X セッション管理のサポート、-lSM -lICE のリンク)。

システムに sm-dev ライブラリがインストールされていない可能性があります。

dpkg -l | grep libsm-dev

sudo apt-get インストール libsm-dev

Qt のソースをもう一度コンパイルしてみてください。qt の configure を実行するときは、セッション管理が有効 (yes) になっていることを確認してください。

于 2013-02-14T11:49:34.820 に答える