2010-10-08 16 views
9

मैं एक डीएलएल के माध्यम से अपने प्रोजेक्ट में SQLite जोड़ने की कोशिश कर रहा हूं।मैं अपने सी ++ प्रोजेक्ट में SQLite DLL कैसे शामिल करूं?

मैंने download page से SQLiteDLL-3 डाउनलोड किया, इसकी सामग्री (एक डीएलएल और एक। एच फ़ाइल) निकाली, और एक .lib फ़ाइल बनाने के लिए lib.exe चलाया। मैं फिर लिंकर >> जनरल के तहत प्रोजेक्ट सेटिंग्स में .lib और .dll फ़ाइलों को एक अतिरिक्त लाइब्रेरी निर्देशिका के रूप में सेट करने वाली निर्देशिका सेट करता हूं।

फिर मैंने डाउनलोड पेज से SQLiteSource-3 डाउनलोड किया, और SQLite3.h फ़ाइल को lib और .DLL फ़ाइलों के साथ निर्देशिका में निकाला, और उस निर्देशिका को सी/सी ++ >> जनरल के तहत अतिरिक्त समावेश निर्देशिका के रूप में जोड़ा । मैंने # मुख्य फ़ाइल में शामिल किया, और उसके बाद sqlite3.dll को लिंकर >> इनपुट में अतिरिक्त निर्भरता के रूप में जोड़ा।

मूल रूप से मैं this पीछा किया, लेकिन जब मैं इसे चलाने, मैं एक त्रुटि कह मिलती है:

fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B8 

मैं चीजों के एक नंबर की कोशिश की इसे सही करने के दोनों x86 और x64 के तहत उदारीकरण फ़ाइल का निर्माण शामिल है, और अतिरिक्त निर्भरता सूची में .lib फ़ाइल के पूर्ण पथ सहित। यह हमेशा मुझे लगता है कि त्रुटि है। ऐसा लगता है कि कम से कम .h फ़ाइल ठीक है, क्योंकि अगर मैं इसमें शामिल नाम से गड़बड़ कर रहा हूं, तो मुझे "फ़ाइल नहीं मिल सकती" त्रुटि मिलती है, इसलिए यह हिस्सा सही प्रतीत होता है।

क्या कोई देख सकता है कि मैं गलत तरीके से क्या कर रहा हूं और इस मुद्दे को कैसे ठीक किया जाए?

अद्यतन: रूप .dll फाइल करने के लिए विरोध किया, अतिरिक्त Dependies सूची में उदारीकरण फ़ाइल जोड़कर फिक्स्ड "अमान्य या दूषित फ़ाइल" मुद्दा। अब मैं हो रही है अनसुलझे लिंकर त्रुटियों:

त्रुटि LNK2019: अनसुलझे बाह्य प्रतीक _sqlite3_exec _main

त्रुटि LNK2019 समारोह में संदर्भित: 2 अनसुलझे बाहरी: अनसुलझे बाह्य प्रतीक _sqlite3_open

गंभीर त्रुटि LNK1120 _main समारोह में संदर्भित

+6

आप एक लिंकर इनपुट, नहीं .dll फ़ाइल के रूप में उदारीकरण फ़ाइल जोड़ें। – Blindy

+1

उस त्रुटि को साफ़ कर दिया गया। धन्यवाद। अब मुझे प्रत्येक कॉल के लिए SQLite फ़ंक्शन में अनसुलझे बाहरी प्रतीक लिंकर त्रुटियां मिल रही हैं। कार्य इंटेलिजेंस में दिखाई देते हैं, अगर यह सब कुछ मायने रखता है। –

+0

गायब प्रतीकों में से एक क्या है? (त्रुटि में कहना चाहिए) – dgnorton

उत्तर

1

अगर मैं सही SQLite याद सी में लिखा है sqlite3.h फ़ाइल

extern "C" {} 
0 है क्या

घोषणाओं को लपेटना? आपके पास name mangling समस्या हो सकती है।

+0

यह वास्तव में करता है। समाधान के रूप में कोई सुझाव? –

+0

जब आप प्रोग्राम चलाते हैं तो डीएलएल फ़ाइल को निष्पादन योग्य, या विंडोज निर्देशिका में एक ही निर्देशिका में होना चाहिए। (Lib फ़ाइल नहीं है) – Jay

+0

आपके संकलन के मुद्दों पर: मुझे लगता है कि आप नेटबीन्स को आईडीई के रूप में उपयोग कर रहे हैं? आपने निर्देशिका में डाल दिया है जहां lib फ़ाइल मिल सकती है लेकिन उस विशिष्ट लाइब्रेरी को शामिल करने के लिए प्रोजेक्ट को नहीं बताया है। लिंकर के तहत >> सामान्य >> पुस्तकालय >> लाइब्रेरी फ़ाइल जोड़ें, फिर sqlite3.lib फ़ाइल चुनें। – Jay

11

यहाँ क्या मेरे लिए काम किया है:

दृश्य स्टूडियो 2010 में, पर क्लिक करें "उपकरण, वी.एस. कमांड प्रॉम्प्ट"

कमांड लाइन विंडो में, दर्ज करें, उदाहरण के लिए:

lib /DEF:"C:\SQLite\sqlite3.def" /OUT:"C:\SQLite\sqlite3.lib" 

समाधान एक्सप्लोरर विंडो में, अपनी प्रोजेक्ट पर राइट-क्लिक करें, "sqlite3.lib" फ़ाइल जोड़ें।

(आप लगता है कि SQLite गिरोह डाउनलोड में एक उदारीकरण शामिल हो सकते हैं?)

+0

हम विजुअल स्टूडियो 2012 में इसे कैसे करते हैं? यह मुझे त्रुटि देता है 'कमांड "lib" मान्य नहीं है। – satur9nine

+0

यह मेरे लिए "अनसुलझा बाहरी" संदेश को ठीक करता है, और ऐप चलता है ... और तुरंत क्रैश हो जाता है। 'विंडोज स्टोर ऐप को सक्रिय करने में असमर्थ .... प्रक्रिया ... शुरू हुई, लेकिन सक्रियण अनुरोध त्रुटि के साथ असफल रहा "ऐप शुरू नहीं हुआ"। – McGarnagle

+0

मेरी गलती - यहां जवाब मेरे लिए भी काम करता है (मेरा उपरोक्त टिप्पणी x86 प्रोजेक्ट के लिए x86 बनाने के कारण है, जैसे डंबस)। – McGarnagle

संबंधित मुद्दे

 संबंधित मुद्दे