Qt Creator RC1 (バージョン 0.9.2) でビルドされたプロジェクトに外部ライブラリを追加するにはどうすればよいですか? たとえば、ビルドするプロジェクトに win32 関数を追加EnumProcesses()
する必要があります。Psapi.lib
8 に答える
これを行う適切な方法は次のとおりです。
LIBS += -L/path/to -lpsapi
このようにして、Qt がサポートするすべてのプラットフォームで動作します。アイデアは、ディレクトリをライブラリ名から分離する必要があるということです(拡張子と「lib」プレフィックスなし)。もちろん、Windows 固有のライブラリを含める場合、これは問題ではありません。
$$_PRO_FILE_PWD_
lib ファイルをプロジェクト ディレクトリに保存する場合は、次のように変数を使用して参照できます。
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake
プロジェクトを使用していますか?LIBS
その場合、変数を使用して外部ライブラリを追加できます。例えば:
win32:LIBS += path/to/Psapi.lib
ライブラリ += C:\Program Files\OpenCV\lib
Program Files で空白を使用しているため、機能しません。この場合、引用符を追加する必要があるため、結果はLIBS += "C:\Program Files\OpenCV\lib"のようになります。ライブラリを空白以外の場所に配置することをお勧めします;-)
あなたが意味するエラーは、追加のインクルードパスが欠落しているためです。次のように追加してみてください: INCLUDEPATH += C:\path\to\include\files\ 動作することを願っています。よろしく。
複数のライブラリ ファイルを追加するには、次のように記述します。
INCLUDEPATH *= E:/DebugLibrary/VTK E:/DebugLibrary/VTK/Common E:/DebugLibrary/VTK/Filtering E:/DebugLibrary/VTK/GenericFiltering E:/DebugLibrary/VTK/Graphics E:/DebugLibrary/VTK/GUISupport/ Qt E:/DebugLibrary/VTK/Hybrid E:/DebugLibrary/VTK/Imaging E:/DebugLibrary/VTK/IO E:/DebugLibrary/VTK/Parallel E:/DebugLibrary/VTK/Rendering E:/DebugLibrary/VTK/Utilities E :/DebugLibrary/VTK/VolumeRendering E:/DebugLibrary/VTK/Widgets E:/DebugLibrary/VTK/Wrapping
LIBS *= -LE:/DebugLibrary/VTKBin/bin/release -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtktexoII -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
アプリケーションを自分だけで使用するのではなく、顧客のマシンにアプリケーションをデプロイする場合、このLIBS+= -Lxxx -lyyy
方法は問題ではないにしても混乱を招く可能性があることがわかりました。
Qtを使用して、Linux、Mac、およびWindows用のアプリケーションを開発しています。完全なスタンドアロン アプリケーションを出荷します。そのため、システム ライブラリ以外のすべてのライブラリを展開パッケージに含める必要があります。私たちは、お客様がすべての OS で同じ USB スティックからアプリケーションを実行できるようにしたいと考えています。プラットフォームの互換性のために、USB スティックは (Linux) シンボリック リンクをサポートしない FAT32 としてフォーマットする必要があります。
このLIBS+= -Lxxx -lyyy
イディオムはブラック ボックスが多すぎることがわかりました。
リンカーによって検出された (静的または動的) ライブラリのファイルパスが正確にはわかりません。これは不便です。私たちの Mac リンカは、私たちが使用すべきだと思っていたものとは異なるライブラリを定期的に見つけました。これは、Mac リンカが要求されたバージョンではなく、独自の古い互換性のない OpenSSL バージョンを見つけて使用した OpenSSL ライブラリで数回発生しました。
リンカがライブラリへのシンボリック リンクを使用することは、展開パッケージを破損する可能性があるため、余裕がありません。
ライブラリの名前から、静的ライブラリと動的ライブラリのどちらをリンクしているかを確認したいと考えています。
したがって、特定のケースでは、絶対ファイルパスのみを使用し、それらが存在するかどうかを確認します。すべてのシンボリックリンクを削除します。
まず、使用しているオペレーティング システムを調べ、これを CONFIG 変数に入れます。そして、たとえば Linux 64 ビットの場合、次のようになります。
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
ファイルパスがわかっているため、すべての依存関係を展開パッケージにコピーできます。