Jawaban:
Cara yang tepat untuk melakukannya adalah seperti ini:
LIBS += -L/path/to -lpsapi
Dengan cara ini akan bekerja pada semua platform yang didukung oleh Qt. Idenya adalah Anda harus memisahkan direktori dari nama perpustakaan (tanpa ekstensi dan tanpa awalan 'lib'). Tentu saja, jika Anda termasuk lib khusus Windows, ini tidak masalah.
Jika Anda ingin menyimpan file lib di direktori proyek, Anda dapat mereferensikannya dengan $$_PRO_FILE_PWD_
variabel, misalnya:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
, saya tidak menemukan nama libs dalam Additional Dependencies
proyek tersebut, tetapi proyek vs berjalan dengan baik. Apakah itu berarti ada beberapa metode lain untuk menambahkan Additional Dependencies
vs?
LIBS += -lGdi32
.
LIBS + = C: \ Program Files \ OpenCV \ lib
tidak akan berfungsi karena Anda menggunakan spasi di Program Files. Dalam hal ini Anda harus menambahkan tanda kutip, sehingga hasilnya akan terlihat seperti ini: LIBS + = "C: \ Program Files \ OpenCV \ lib" . Saya sarankan untuk menempatkan perpustakaan di lokasi non-ruang putih ;-)
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
Kesalahan yang Anda maksud adalah karena jalur penyertaan tambahan tidak ada. Coba tambahkan dengan: INCLUDEPATH + = C: \ path \ to \ include \ files \ Hope it works. Salam.
Dan untuk menambahkan beberapa file library bisa anda tulis seperti dibawah ini:
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 / Widget E: / DebugLibrary / VTK / Wrapping
Libs * = -LE: / DebugLibrary / VTKBin / bin / melepaskan -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
Jika Anda ingin menerapkan aplikasi Anda pada mesin pelanggan, daripada hanya menggunakan aplikasi Anda sendiri, kami menemukan bahwa LIBS+= -Lxxx -lyyy
metode ini dapat menyebabkan kebingungan jika bukan masalah.
Kami mengembangkan aplikasi untuk Linux, Mac dan Windows menggunakan Qt. Kami mengirimkan aplikasi yang lengkap dan berdiri sendiri. Jadi semua pustaka non-sistem harus disertakan dalam paket penerapan. Kami ingin pelanggan kami dapat menjalankan aplikasi dari stik USB yang sama untuk semua OS. Untuk alasan kompatibilitas platform, stik USB kemudian harus diformat sebagai FAT32, yang tidak mendukung symlink (Linux).
Kami menemukan LIBS+= -Lxxx -lyyy
idiom terlalu banyak dari kotak hitam:
Kami tidak tahu persis apa jalur file dari pustaka (statis atau dinamis) yang telah ditemukan oleh linker. Ini tidak nyaman. Linker Mac kami secara teratur menemukan lib yang berbeda dari yang kami pikir sebaiknya digunakan. Ini terjadi beberapa kali dengan pustaka OpenSSL tempat penaut Mac menemukan dan menggunakan versi OpenSSL miliknya - yang lebih lama dan tidak kompatibel - bukan versi yang kami minta.
Kami tidak dapat membayar bahwa linker menggunakan symlink ke pustaka karena ini akan merusak paket penerapan.
Kami ingin melihat dari nama perpustakaan apakah kami menghubungkan perpustakaan statis atau dinamis.
Jadi untuk kasus khusus kami, kami hanya menggunakan jalur file absolut dan memeriksa apakah ada. Kami menghapus semua symlink.
Pertama kami mencari tahu sistem operasi apa yang kami gunakan dan meletakkannya di variabel CONFIG. Dan, misalnya untuk Linux 64bit, maka:
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
}
Semua dependensi dapat disalin ke dalam paket penerapan seperti yang kita ketahui jalur filenya.
Saya ingin menambahkan, demi kelengkapan, Anda juga dapat menambahkan PATH PERPUSTAKAAN yang akan mencari perpustakaan dependen (yang mungkin tidak langsung direferensikan dalam kode Anda, tetapi perpustakaan yang Anda gunakan mungkin memerlukannya).
Sebagai perbandingan, ini akan sesuai dengan apa yang dilakukan lingkungan LIBPATH tetapi jenisnya tidak jelas di Qt Creator dan tidak didokumentasikan dengan baik.
Cara saya menyadarinya adalah sebagai berikut:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
Pada dasarnya jika Anda tidak memberikan nama pustaka yang sebenarnya, itu menambahkan jalur ke tempat itu akan mencari pustaka yang bergantung. Perbedaan sintaksnya kecil tetapi ini sangat berguna untuk menyediakan hanya PATH di mana mencari perpustakaan dependen. Terkadang hanya merepotkan untuk menyediakan setiap jalur perpustakaan individu di mana Anda tahu semuanya ada di folder tertentu dan Qt Creator akan mengambilnya.
di .pro: LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
dalam .h / .cpp: #pragma comment(lib,"user32.lib")
#pragma comment(lib,"psapi.lib")