2009-09-01 63 views
32

Qt Creatorで静的ライブラリを使用する方法を明確に説明しているドキュメントがあります。Qt Creatorで静的ライブラリを使用する

Qt Creatorを使用して静的ライブラリを作成してコンパイルしました(新規=> Projects \ C++ライブラリ=>タイプを「静的リンクライブラリ」に設定します)。コンパイルし、 ".aファイル"を吐き出します。

私が遭遇する問題は、ライブラリを使用しようとするときです。私はそれを使用したい別のプロジェクトを持っています(#ライブラリにあるファイルをインクルードします)が、ライブラリにリンクするか、ライブラリからファイルをインクルードする適切な方法がわかりません。

答えて

34
LIBS += -L[path to lib] -l[name of lib] 

注意! LIBのファイル名:.A [nameOfLib] libとあなたは[nameOfLib]

+1

投稿した直後にhttp://doc.trolltech.com/4.5/qmake-project-files.html#declaring-other-librariesで回答が見つかりました。(qmakeのドキュメントに迷惑をかけるのではなく、作成者についての愚かなことがありました)。 私はまだ-Lや-lの意味は分かりませんが、それはmakefileの性質です。コマンドラインgobbl-dee-gookは簡単に解析できます...コマンドラインgobble-dee-gook。 RPGの答えも関連していますが、インクルードパスのものは重要です。私はあなたの正しいマークをつけました。-L/-lも重要だからです! –

+5

これは私にとってはうまくいかなかったが、.proファイルを編集しているときに右クリックして "ライブラリの追加" UIを使用している別の答えがあった。 – andrewrk

15

ライブラリを使用するプロジェクトでは、LIBSがlibのパスを指し示すようになります。
ライブラリからファイルをインクルードするには、ライブラリフォルダをINCLUDEPATHに追加してから、コードファイルに標準の#includeを実行します。

例:

# the binary's .pro 
LIBS += c:/mylibs/math.lib 
INCLUDEPATH += c:/mylibs 

編集:
-Lは、パスが、それは -lは、パスがファイルであることを告げるライブラリを検索するが、ノートを取ることができたディレクトリであることをqmakeに伝えます以下の観測のqmakeのドキュメントから

この変数は プロジェクト内でリンクされる ライブラリのリストが含まれています。あなたはUnix -l (ライブラリ)と-L(ライブラリパス)フラグ を使用することができ、qmakeはこれらのライブラリをWindows で正しいものとする(つまり、ライブラリのフルパス をリンカに渡すことを意味します) 。上記 のようにWindowsの場合は、-lオプションでライブラリ を指定して、:。これに 唯一の制限は ライブラリに たディレクトリ-l libの生活を見つけるためにqmakeのために、存在している必要があり

注意ですたとえば、 のライブラリを使用すると、最も高いバージョン番号が使用されます。たとえば の場合、libmath2.libは libmathlibの代わりに を使用する可能性があります。このあいまいさを避けるには、 .libファイル名の接尾辞を含む が使用するライブラリを明示的に指定することをお勧めします。

+0

この回答を投稿していただきありがとうございます。 Qt5のドキュメントのLIBSとINCLUDEPATH変数へのリンクは次のとおりです。[LIBS](http://doc.qt.io/qt-5/qmake-variable-reference.html#libs)、[INCLUDEPATH](http: /doc.qt.io/qt-5/qmake-variable-reference.html#includepath)。 – RAM

11

..from QTプロジェクトの作成者

  1. 後藤プロジェクト名-lだけのオリジナルパーツを渡す必要があります。左側のメニューからプロ
  2. 型LIBS + =
  3. 右クリックAddLibrary
+7

'LIBS + ='と入力する必要はありません。これを2ステップに短縮することができます。 – andrewrk

+0

これは実際にはすべての回答からうまく解決できる唯一の解決策です。 andrewrkが示唆したように、LIBS + =を入力する必要はありません。必要なのは、.proファイルに移動し、右クリックしてライブラリを追加して、QtCreatorに必要なコード行を生成させるだけです(私のシステム[Qt 5.4、Linux]のBTWは、他の答え) – Karpov

3

それは

LIBS += -L"/some path" -l"somename.a" 

または

LIBS += -L/somepath -lsomename.a 

または

LIBS += -L/somepath -lsomename" 
です

これは取得するのと同じくらい簡単なはずですが、なんらかの理由で検索結果を引き上げるのは難しいです。フォーラムのヒント数が多く、助けを求めています。あなたが同じフォルダPATH_TO_LIB_DIRの両方で静的libLIBNAME.aと動的libLIBNAME.so LIBSを持っている場合...

+1

答えはDewfy答え – Coren

+0

です。最初の2つの亜種は、Linuxでは私にとってはうまくいきません。 – Temak

8

バリアント

LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME] 

が動作しないのに役立ちます。
この場合は私のLinuxでQMake v 3.0 がデフォルトでリンクされています。
静的なリンク 1つをオプションなしで明示的に指定する必要があります。

LIBS += PATH_TO_LIB_DIR/libLIBNAME.a 
+0

私は何かsimliarに気付きました: 'module.dll'と' libmodule.a'が同じフォルダにあり、 '-L -l 'でdllを含めると、複数の定義エラーが出ます。ただし、静的なlibファイル(.a)を削除すると、動作します。これが偶然だったのか期待されたのかわからない – user2366975

関連する問題