-1

今朝から、QT コール qxmpp 用の XMPP ライブラリをコンパイルしようとしています。

Qt Creator を使用して Build All を実行しようとしましたが、コンパイラは -lqxmpp0 と呼ばれるものを見つけることができず、それが何であるかわかりません。Google は残念ながら役に立ちませんでした。

私のQtウィンドウ: ここに画像の説明を入力

github ライブラリ

事前にご協力いただきありがとうございます。

4

2 に答える 2

1

qxmpp.pri に次のような定義があるかどうかを確認してください。

QXMPP_INCLUDEPATH = $$PWD/src/base $$PWD/src/client $$PWD/src/server

# Determine library name
CONFIG(debug, debug|release) {
    QXMPP_LIBRARY_NAME = qxmpp_d
} else {
    QXMPP_LIBRARY_NAME = qxmpp
}

# Determine library type (shared or staticlib)
isEmpty(QXMPP_LIBRARY_TYPE) {
    android | ios {
        QXMPP_LIBRARY_TYPE = staticlib
    } else {
        QXMPP_LIBRARY_TYPE = shared
    }
}

QXMPP_LIBRARY_NAME がライブラリの名前を定義していることがわかりますか。examples.pro に qxmpp.pri が含まれているかどうかも確認してください。私の答えがお役に立てば幸いです。

于 2015-05-16T02:42:32.500 に答える
-1

-library -l ライブラリ

リンク時に library という名前のライブラリを検索します。(別の引数としてライブラリを使用する 2 番目の選択肢は、POSIX 準拠のためだけのものであり、推奨されません。)

コマンドのどこにこのオプションを記述するかによって違いが生じます。リンカーは、指定された順序でライブラリとオブジェクト ファイルを検索して処理します。したがって、'foo.o -lz bar.o' は、ファイル foo.o の後、bar.o の前にライブラリー 'z' を検索します。bar.o が 'z' 内の関数を参照する場合、それらの関数はロードされない可能性があります。

リンカは、ライブラリのディレクトリの標準リストを検索します。これは、実際には liblibrary.a という名前のファイルです。リンカーは、このファイルを名前で正確に指定されているかのように使用します。

検索されるディレクトリには、いくつかの標準システム ディレクトリに加えて、-L で指定したディレクトリが含まれます。

通常、この方法で検出されたファイルはライブラリ ファイル (メンバーがオブジェクト ファイルであるアーカイブ ファイル) です。リンカーは、アーカイブ ファイルをスキャンして、これまでに参照されたがまだ定義されていないシンボルを定義するメンバーを探して処理します。ただし、見つかったファイルが通常のオブジェクト ファイルである場合は、通常の方法でリンクされます。-l オプションを使用する場合とファイル名を指定する場合の唯一の違いは、-l はライブラリを「lib」と「.a」で囲み、いくつかのディレクトリを検索することです。


https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

于 2015-04-28T15:49:16.533 に答える