Yanıtlar:
Bunu yapmanın doğru yolu şudur:
LIBS += -L/path/to -lpsapi
Bu şekilde Qt tarafından desteklenen tüm platformlarda çalışacaktır. Buradaki fikir, dizini kitaplık adından ayırmanız gerektiğidir (uzantı ve 'lib' öneki olmadan). Elbette, Windows'a özgü bir kitaplık ekliyorsanız, bu gerçekten önemli değil.
Kitaplık dosyalarınızı proje dizininde saklamak istemeniz durumunda, bunlara bir $$_PRO_FILE_PWD_
değişkenle başvurabilirsiniz , örneğin:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
, projede kitap adı bulamıyorum Additional Dependencies
, ancak vs projesi iyi çalışıyor. Bu Additional Dependencies
, vs eklemek için başka yöntemler olduğu anlamına mı geliyor ?
LIBS += -lGdi32
.
LIBS + = C: \ Program Dosyaları \ OpenCV \ lib
Program Dosyaları'nda beyaz boşluklar kullandığınız için çalışmaz. Bu durumda tırnak işaretleri eklemeniz gerekir, böylece sonuç şöyle görünecektir: LIBS + = "C: \ Program Files \ OpenCV \ lib" . Kitaplıkları beyaz boşluk olmayan yerlere yerleştirmenizi tavsiye ederim ;-)
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
Demek istediğiniz hata ek içerme yolunun eksik olmasından kaynaklanmaktadır. Şununla eklemeyi deneyin: INCLUDEPATH + = C: \ path \ to \ include \ files \ Umarım çalışır. Saygılarımızla.
Birden fazla kitaplık dosyası eklemek için aşağıdaki gibi yazabilirsiniz:
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 / serbest -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
Uygulamanızı yalnızca kendiniz kullanmak yerine müşterilerin makinelerine dağıtmak istiyorsanız, LIBS+= -Lxxx -lyyy
yöntemin sorun değilse bile kafa karışıklığına yol açabileceğini .
Qt kullanarak Linux, Mac ve Windows için uygulamalar geliştiriyoruz. Eksiksiz, bağımsız uygulamalar gönderiyoruz. Bu nedenle, tüm sistem dışı kitaplıklar dağıtım paketine dahil edilmelidir. Müşterilerimizin uygulamayı tüm işletim sistemleri için aynı USB çubuğundan çalıştırabilmesini istiyoruz. Platform uyumluluğu nedeniyle USB bellek, (Linux) sembolik bağlantılarını desteklemeyen FAT32 olarak biçimlendirilmelidir.
LIBS+= -Lxxx -lyyy
Deyimi çok fazla kara kutu bulduk :
Bağlayıcı tarafından bulunan (statik veya dinamik) kitaplığın dosya yolunun tam olarak ne olduğunu bilmiyoruz. Bu sakıncalıdır. Mac bağlayıcımız düzenli olarak, kullanılması gerektiğini düşündüklerimizden farklı libler buldu. Bu, Mac bağlayıcısının istediğimiz sürüm yerine kendi - eski, uyumsuz - OpenSSL sürümünü bulduğu ve kullandığı OpenSSL kitaplıklarında birkaç kez oldu.
Bağlayıcının kitaplıklara sembolik bağlar kullanmasını göze alamayız çünkü bu dağıtım paketini bozabilir.
Bir statik kitaplığı mı yoksa dinamik bir kitaplığı mı bağladığımızı kitaplığın adından görmek istiyoruz .
Bu nedenle, bizim özel durumumuz için yalnızca mutlak dosya yolları kullanıyoruz ve var olup olmadıklarını kontrol ediyoruz. Tüm sembolik bağlantıları kaldırıyoruz.
Önce hangi işletim sistemini kullandığımızı bulup bunu CONFIG değişkenine koyuyoruz. Ve örneğin Linux 64bit için, o zaman:
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
}
Dosya yollarını bildiğimiz için tüm bağımlılıklar dağıtım paketine kopyalanabilir.
Eksiksizlik adına, bağımlı bir kitaplığı arayacağı yalnızca KÜTÜPHANE YOLUNU da ekleyebileceğinizi eklemek isterim (kodunuzda doğrudan başvurulmayabilir, ancak kullandığınız bir kitaplık buna ihtiyaç duyabilir).
Karşılaştırma için, bu, LIBPATH ortamının yaptıklarına karşılık gelir, ancak Qt Creator'da bir tür belirsizdir ve iyi belgelenmemiştir.
Bunu halletme şeklim şudur:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
Esasen, gerçek kitaplık adını sağlamazsanız, bağımlı kitaplıkları arayacağı yolu ekler. Sözdizimindeki fark küçüktür, ancak bu, bağımlı kitaplıkların aranacağı PATH'yi sağlamak için çok kullanışlıdır. Bazen, her bir yolun belirli bir klasörde olduğunu bildiğiniz ve Qt Creator'ın bunları alacağı tek bir kitaplık sağlamak sadece bir acıdır.
Profesyonel olarak : LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
.h / .cpp biçiminde: #pragma comment(lib,"user32.lib")
#pragma comment(lib,"psapi.lib")