web-dev-qa-db-ja.com

Qt Creatorで静的ライブラリを使用する

私は、Qt Creatorで静的ライブラリを使用する方法を明確に説明するドキュメントを見つけるのに苦労しています。

Qt Creatorを使用して静的ライブラリを作成およびコンパイルしました(New => Projects\C++ Library => Set type to "Statically Linked Library")。 「.aファイル」をコンパイルして吐き出します。

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

35
Dan O
LIBS += -L[path to lib] -l[name of lib]

注意! libのファイル名:lib [nameOfLib] .aで、元の部分-l [nameOfLib]のみを渡す必要があります

35
Dewfy

ライブラリを使用するプロジェクトで、 [〜#〜] libs [〜#〜] 変数がlibのパスを指すようにします。
ライブラリのファイルを含めるには、ライブラリフォルダーを [〜#〜] includepath [〜#〜] に追加し、コードファイルで通常の#includeを実行します。

例えば:

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

編集済み:
-Lは、パスがライブラリを検索できるディレクトリであることをqmakeに伝えます-lは、パスがファイルであることを伝えますが、以下の観察に注意してください。

Qmakeドキュメントから:

この変数には、プロジェクトにリンクされるライブラリのリストが含まれています。 Unixの-l(ライブラリ)フラグと-L(ライブラリパス)フラグを使用すると、qmakeはこれらのライブラリをWindows上で正しく処理します(つまり、ライブラリのフルパスをリンカーに渡すことを意味します)。これに対する唯一の制限は、qmakeが-l libが存在するディレクトリを見つけるために、ライブラリが存在する必要があることです。

注:Windowsでは、上記の例のように-lオプションを使用してライブラリを指定すると、最大バージョン番号のライブラリが使用されます。たとえば、libmath2.libはlibmathlibの代わりに使用される可能性があります。このあいまいさを避けるため、。libファイル名のサフィックスを含めることにより、使用するライブラリを明示的に指定することをお勧めします。

17
rpg

..QTプロジェクト作成者から

  1. 左側のサイドメニューからprojectName.proに移動します。
  2. タイプLIBS + =
  3. addLibraryを右クリックします
15

バリアント

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

同じフォルダーlibLIBNAME.aに静的libLIBNAME.soと動的PATH_TO_LIB_DIRの両方がある場合は機能しません。
この場合、QMake v 3.0を使用するLinuxでは、動的なものがデフォルトでリンクされます。
To 静的とのリンケージオプションなしで明示的に指定する必要があります。

LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
10
Temak

それは...ですか

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

または

LIBS += -L/somepath -lsomename.a

または

LIBS += -L/somepath -lsomename"

これはできる限り簡単なはずですが、何らかの理由で検索結果を引き出すのは非常に困難です。なぜなら、助けを求めている人々のフォーラムには非常に多くのヒットがあり、私は得ることができるすべてのヒントに従いましたが、助けはありません。 ..

2
Know-One