Bagaimana cara menambahkan pustaka eksternal ke dalam proyek yang dibangun oleh Qt Creator RC1 (versi 0.9.2)? Misalnya, fungsi win32 EnumProcesses()
perlu Psapi.lib
ditambahkan dalam proyek untuk membangun.
c++
winapi
qt
qt-creator
Donotalo
sumber
sumber
qmake -tp vc
, saya tidak menemukan nama libs dalamAdditional Dependencies
proyek tersebut, tetapi proyek vs berjalan dengan baik. Apakah itu berarti ada beberapa metode lain untuk menambahkanAdditional Dependencies
vs?LIBS += -lGdi32
.Apakah Anda menggunakan
qmake
proyek? Jika demikian, Anda dapat menambahkan pustaka eksternal menggunakanLIBS
variabel. Misalnya:sumber
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 ;-)
sumber
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.
sumber
Dan untuk menambahkan beberapa file library bisa anda tulis seperti dibawah ini:
sumber
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:
Semua dependensi dapat disalin ke dalam paket penerapan seperti yang kita ketahui jalur filenya.
sumber
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:
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.
sumber
di .pro:
LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
dalam .h / .cpp:
#pragma comment(lib,"user32.lib")
sumber