जवाबों:
ऐसा करने का उचित तरीका इस प्रकार है:
LIBS += -L/path/to -lpsapi
इस तरह यह Qt द्वारा समर्थित सभी प्लेटफार्मों पर काम करेगा। विचार यह है कि आपको निर्देशिका को पुस्तकालय के नाम से अलग करना होगा (विस्तार के बिना और बिना किसी 'लिबास' उपसर्ग के)। बेशक, अगर आप विंडोज विशिष्ट लिबास में शामिल हैं, तो यह वास्तव में मायने नहीं रखता।
यदि आप प्रोजेक्ट डायरेक्टरी में अपनी लिबास फाइल्स स्टोर करना चाहते हैं, तो आप उन्हें $$_PRO_FILE_PWD_
वेरिएबल के साथ रेफर कर सकते हैं , जैसे:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
कोई लिबास नाम नहीं मिलते हैं Additional Dependencies
, लेकिन बनाम परियोजना अच्छी तरह से चलती है। इसका मतलब है कि Additional Dependencies
बनाम में जोड़ने के लिए कुछ अन्य तरीके हैं ?
LIBS += -lGdi32
:।
LIBS + = C: \ Program Files \ OpenCV \ lib
काम नहीं करेगा क्योंकि आप प्रोग्राम फाइल्स में व्हाइट-स्पेस का उपयोग कर रहे हैं। इस स्थिति में आपको उद्धरण जोड़ना होगा, इसलिए परिणाम इस तरह दिखाई देगा: LIBS + = "C: \ Program Files \ OpenCV \ lib" । मैं गैर-सफेद स्थानों में पुस्तकालयों को रखने की सलाह देता हूं ;-)
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
आपके द्वारा की गई त्रुटि अनुपलब्ध अतिरिक्त पथ के कारण है। इसे इसके साथ जोड़ने का प्रयास करें: INCLUDEPATH + = C: \ path \ to \ शामिल \ files \ Hope यह काम करता है। सादर।
और कई पुस्तकालय फ़ाइलों को जोड़ने के लिए आप नीचे लिख सकते हैं:
INCLUDEPATH * = E: / DebugLibrary / VTK E: / DebugLibrary / VTK / Common E: / DebugLibrary / VTK / फ़िल्टरिंग E: / DebugLibrary / VTK / Genericililtering E: / DebugLibrary / VTK / Graphics E: / DebugLibrary / VTK / GUKUP Qt E: / DebugLibrary / VTK / Hybrid E: / DebugLibrary / VTK / इमेजिंग E: / DebugLibrary / VTK / IO E: / DebugLibrary / VTK / Parallel E: / DebugLibrary / VTK / प्रतिपादन E: / DebugLibrary / VTK / उपयोगिताएँ E : / डीबग्लुवेड्स / वीटीके / वॉल्यूम रेंडरिंग ई: / डीबग्लुवेट / वीटीके / विजेट ई: / डीबग्लुइट्स / वीटीके / रैपिंग
* -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
यदि आप अपना आवेदन केवल अपने आवेदन का उपयोग करने के बजाय ग्राहकों की मशीनों पर तैनात करना चाहते हैं, तो हम पाते हैं कि LIBS+= -Lxxx -lyyy
यदि समस्याएँ हैं तो यह विधि भ्रम पैदा कर सकती है।
हम क्यूटी का उपयोग करके लिनक्स, मैक और विंडोज के लिए एप्लिकेशन विकसित करते हैं। हम पूर्ण, स्टैंड-अलोन एप्लिकेशन शिप करते हैं। इसलिए सभी गैर-सिस्टम पुस्तकालयों को परिनियोजन पैकेज में शामिल किया जाना चाहिए। हम चाहते हैं कि हमारे ग्राहक सभी OS के लिए एक ही USB स्टिक से एप्लिकेशन चला सकें। प्लेटफ़ॉर्म अनुकूलता के कारणों के लिए USB स्टिक को FAT32 के रूप में स्वरूपित किया जाना चाहिए, जो (लिनक्स) सहानुभूति का समर्थन नहीं करता है।
हमें LIBS+= -Lxxx -lyyy
मुहावरा बहुत अधिक ब्लैक बॉक्स मिला:
हम बिल्कुल नहीं जानते कि फ़ाइलपैथ (स्थिर या गतिशील) लाइब्रेरी का क्या है जो लिंकर द्वारा पाया गया है। यह असुविधाजनक है। हमारे मैक लिंकर ने नियमित रूप से उन लोगों से भिन्नताएं पाई हैं जिन्हें हमने सोचा था कि इसका उपयोग किया जाना चाहिए। यह कई बार ओपनएसएसएल पुस्तकालयों के साथ हुआ जहां मैक लिंकर ने अपने अनुरोधित संस्करण के बजाय अपने पुराने, असंगत - ओपनएसएसएल संस्करण का उपयोग किया।
हम इस बात को बर्दाश्त नहीं कर सकते कि लिंकर पुस्तकालयों के लिए सीमलिंक का उपयोग करता है क्योंकि यह तैनाती पैकेज को तोड़ देगा।
हम लाइब्रेरी के नाम से देखना चाहते हैं कि क्या हम एक स्टैटिक या डायनेमिक लाइब्रेरी को लिंक करते हैं।
इसलिए हमारे विशेष मामले के लिए हम केवल निरपेक्ष फ़ाइलपथ का उपयोग करते हैं और जाँचते हैं कि वे मौजूद हैं या नहीं। हम सभी सीमलिंक निकालते हैं।
पहले हमें पता चलता है कि हम किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं और इसे CONFIG वेरिएबल में डाल रहे हैं। और, लिनक्स 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
}
सभी निर्भरताएँ परिनियोजन पैकेज में कॉपी की जा सकती हैं क्योंकि हम उनकी फ़ाइलपथ जानते हैं।
मैं पूर्णता के लिए जोड़ना चाहूंगा कि आप केवल LIBRARY PATH को भी जोड़ सकते हैं जहाँ यह एक आश्रित पुस्तकालय की तलाश करेगा (जो आपके कोड में सीधे संदर्भित नहीं हो सकता है लेकिन आपके द्वारा उपयोग किए जाने वाले पुस्तकालय की आवश्यकता हो सकती है)।
तुलना के लिए, यह LIBPATH वातावरण के अनुरूप है, लेकिन क्यूटी निर्माता में इसकी तरह का अस्पष्ट है और अच्छी तरह से प्रलेखित नहीं है।
जिस तरह से मैं इसके आसपास आया वह निम्नलिखित है:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
अनिवार्य रूप से यदि आप वास्तविक पुस्तकालय नाम प्रदान नहीं करते हैं, तो यह उस पथ को जोड़ता है जहां यह निर्भर पुस्तकालयों की खोज करेगा। सिंटैक्स में अंतर छोटा है, लेकिन यह केवल उन पैट की आपूर्ति करने के लिए बहुत उपयोगी है जहां निर्भर पुस्तकालयों की तलाश है। यह कुछ समय के लिए प्रत्येक पथ व्यक्तिगत पुस्तकालय की आपूर्ति करने के लिए एक दर्द है, जहां आप जानते हैं कि वे सभी कुछ निश्चित फ़ोल्डर में हैं और क्यूटी निर्माता उन्हें उठाएगा।
यथानुपात में : LIBS += Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
इन .h / .cpp: #pragma comment(lib,"user32.lib")
#pragma comment(lib,"psapi.lib")