2009-05-01 12 views
34

में डीएलएल संदर्भ मेरे पास सी ++ अनुभव है लेकिन एमएसवीसी नहीं है।विजुअल सी ++

जो मैं करने की कोशिश कर रहा हूं वह मेरे प्रोजेक्ट में ओपन सोर्स प्रोजेक्ट से .dll को शामिल करता है। कोड उपलब्ध है और मैंने इसे बनाया है। मेरे पास .dll के साथ-साथ .lib है जो मुझे समझ में आता है कि यह C++ परियोजनाओं के लिए आवश्यक है।

दुर्भाग्य से कोई सरल "संदर्भ जोड़ें" नहीं है, मेरी .dll को एक निर्देशिका में छोड़ दें और इसे मेरे समाधान में जोड़ें। मैंने परियोजना प्रॉपर्टी पेजों को संपादित किया है, सी/सी ++ अतिरिक्त शामिल डायरेक्टरीज विकल्प के साथ-साथ .lib को अतिरिक्त लिंकर निर्भरता के रूप में जोड़ना है। मैंने अपने समाधान पेड़ के अंदर डीएल और lib के लिए एक निर्देशिका शामिल की है।

मेरी समस्या तब होती है जब मैं दस्तावेज़ से हेडर फ़ाइलों को शामिल करने का प्रयास करता हूं, वीएस आउटपुट त्रुटि संदेशों को थकाता है। अब मुझे एहसास है कि मैं डीएलएल/लिब कॉम्बो का उपयोग कर रहा हूं और यह कि मेरे समाधान में .h फ़ाइलें मौजूद नहीं हैं, इसलिए मैं उचित कैसे जोड़ूं? मैं QT टूलकिट का भी उपयोग कर रहा हूं जो काम कर रहा है लेकिन ओपन सोर्स लाइब्रेरी से मैं अन्य हेडर/डीएल कैसे जोड़ूं।

क्या कोई मुझे सही दिशा में इंगित कर सकता है।

+1

आप कहते हैं "वीएस आउटपुट त्रुटि संदेशों को थकाता है", लेकिन हमें यह जानने की जरूरत है कि वे इसे ठीक करने के लिए क्या थे। – GManNickG

+0

मेरे पास मेरी .cpp और .h फ़ाइलें समाधान/src में हैं। .dll/lib समाधान/शामिल हैं। मैंने "लिंकर -> अतिरिक्त लाइब्रेरी निर्देशिकाएं" और "सी/सी ++ -> अतिरिक्त निर्देशिकाएं शामिल करें" में समाधान/शामिल किया था। मुझे जो हेडर चाहिए वह TwitLib लाइब्रेरी से QTwitLib.h है। एक # शामिल "QTwitLib.h" या यहां तक ​​कि ../ या शामिल/QTwitLib.h सभी मुझे एक "घातक त्रुटि दें: फ़ाइल शामिल नहीं खोल सकता: ऐसी कोई फ़ाइल नहीं"। –

+0

मदद नहीं कर सकता है लेकिन आश्चर्य की बात है कि 7+ साल की पोस्ट में एक मामूली, अपरिहार्य संपादन (और अनुमोदन) बनाने का क्या मतलब है। – dxiv

उत्तर

70

आप पुस्तकालय का उपयोग करने के चीजों की एक जोड़ी क्या करने की जरूरत:

  1. सुनिश्चित करें कि आप दोनों * उदारीकरण और है कि बनाओ * .dll पुस्तकालय आप उपयोग करना चाहते हैं। यदि आपके पास * .lib नहीं है, तो # 2

  2. प्रोजेक्ट में * .lib का संदर्भ दें। समाधान एक्सप्लोरर में प्रोजेक्ट नाम पर राइट क्लिक करें और उसके बाद कॉन्फ़िगरेशन गुण-> लिंकर-> इनपुट का चयन करें और अतिरिक्त निर्भरता गुण में lib का नाम दें।

  3. आपको यह सुनिश्चित करना होगा कि वीएस आपको अभी जोड़ा गया lib ढूंढ सकता है, इसलिए आपको टूल्स मेनू पर जाना होगा और विकल्प चुनना होगा ... फिर परियोजनाओं और समाधानों के तहत वीसी ++ निर्देशिकाएं चुनें, लाइब्रेरी निर्देशिका विकल्प संपादित करें। यहां से आप उस निर्देशिका को सेट कर सकते हैं जिसमें 'निर्देशिकाएं दिखाएं:' ड्रॉप डाउन बॉक्स में 'लाइब्रेरी फ़ाइलें' चुनकर अपनी नई lib शामिल है। निर्देशिकाओं की सूची में बस अपनी lib फ़ाइल में पथ जोड़ें। यदि आपके पास कोई lib नहीं है तो आप इसे छोड़ सकते हैं, लेकिन यहां पर आपको निर्देशिका को सेट करने की भी आवश्यकता होगी जिसमें आपकी शीर्षलेख फ़ाइलें शामिल होंगी और साथ ही 'फ़ाइलें शामिल करें' के अंतर्गत भी। वैसे ही ऐसा करें जैसे आपने lib जोड़ा।

यह करने के बाद तुम जाना अच्छा होना चाहिए और अपने पुस्तकालय का उपयोग कर सकते हैं। यदि आपके पास कोई lib फ़ाइल नहीं है तो भी आप इसे स्वयं आयात करके डीएलएल का उपयोग कर सकते हैं। अपने अनुप्रयोग स्टार्टअप के दौरान आप लोडलाब्रिरी को कॉल करके स्पष्ट रूप से डीएल लोड कर सकते हैं (देखें: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx अधिक जानकारी के लिए)

चीयर्स!

संपादित

# शामिल < Foo.h उपयोग करने के लिए> के रूप में "foo.h" # शामिल करने का विरोध किया याद रखें। पूर्व में पथ शामिल हैं। उत्तरार्द्ध स्थानीय परियोजना फ़ाइलों का उपयोग करता है।

+24

बिल्कुल सही जवाब। मैं बस एक अपडेट जोड़ना चाहता था: वीएस 2010 में, चरण 3 थोड़ा बदल दिया गया है; अब आप समाधान एक्सप्लोरर में अपनी प्रोजेक्ट पर राइट-क्लिक करें, गुण चुनें, फिर कॉन्फ़िगरेशन गुण> VC++ निर्देशिकाओं पर जाएं। –

+2

अगर मैं गलत हूं, तो मुझे सही करें, लेकिन मुझे लगता है कि हमें यह भी सुनिश्चित करना होगा कि .dll फ़ाइलों को रनटाइम पर पाया जा सके। ऐसा करने का एक आसान तरीका है .dll फ़ाइलों को समाधान के लिए .exe के समान निर्देशिका में कॉपी करना है। [अधिक जानकारी के लिए यहां देखें] (http://stackoverflow.com/questions/4953843/why-cant-visual-studio-find-my-dll)। – littleO

+1

मैंने इसे वीएस 2013 में करने की कोशिश की और मुझे चरण 3 करने का तरीका नहीं मिला। – STF

1

आप अतिरिक्त शामिल निर्देशिका (सी/सी ++ | सामान्य) और अतिरिक्त lib निर्भरता (लिंकर | इनपुट) जोड़ने का उल्लेख करते हैं, लेकिन क्या आपने अतिरिक्त लाइब्रेरी निर्देशिका (लिंकर | जनरल) भी जोड़ा है?

नमूना त्रुटि संदेश सहित लोगों को प्रश्न का उत्तर देने में भी मदद मिल सकती है क्योंकि यह संकलन या लिंकिंग के दौरान त्रुटि होने पर भी स्पष्ट नहीं है।

2

अतिरिक्त शामिल निर्देशिका परियोजना डीआईआर के सापेक्ष हैं। यह आमतौर पर डीआईआर है जहां आपकी प्रोजेक्ट फ़ाइल, * .vcproj स्थित है। मुझे लगता है कि आपके मामले में आपको अपने शामिल और लाइब्रेरी निर्देशिकाओं में केवल "शामिल" जोड़ना होगा।

यदि आप यह सुनिश्चित करना चाहते हैं कि आपका प्रोजेक्ट डीआईआर क्या है, तो आप $ (ProjectDir) मैक्रो के मूल्य की जांच कर सकते हैं। ऐसा करने के लिए "सी/सी ++ -> अतिरिक्त निर्देशिकाएं शामिल करें" पर जाएं, "..." बटन दबाएं और पॉप-अप संवाद में "मैक्रोज़ >>" दबाएं।