2012-11-18 9 views
5

के साथ एसक्यूएलएट को स्थिर रूप से लिंक करना मैंने सफलता के बिना एसक्लाइट 3 के साथ स्थिर रूप से लिंक करने का प्रयास किया है। मैं 'etcc.sqlite3' हेडर का उपयोग कर रहा हूं, और sqlite3 समामेलन। .lib फ़ाइल बनाने के लिए मैंने वीसी ++ और मिनजीडब्ल्यू-जीसीसी दोनों की कोशिश की है, ये दोनों स्रोत फ़ाइल को सफलतापूर्वक संकलित करते हैं - लेकिन वे दोनों सीओएफएफ ऑब्जेक्ट प्रारूप (ऑप्टलिंक, जो डीएमडी उपयोग करता है, ओएमएफ के साथ काम करता है) उत्पन्न करता है। 'Digitalmars.D' पर कई पोस्ट पढ़ने के बाद, मैंने कई अलग-अलग समाधानों की कोशिश की है।डीएमडी (विंडोज x86)

objconv:

  • , जीसीसी के साथ बनाया lib फ़ाइल को रूपांतरित करने की कोशिश की इस तरह के __divdi3 और __muldi3 के रूप में अपरिभाषित प्रतीकों में हुई, इस हल करने में सक्षम नहीं था।

  • इसके अलावा इस की कोशिश की sqlite3.o फ़ाइल * .obj में बदलने के लिए, और फिर digitalmars 'lib.exe' का उपयोग करें - असफल रूप में अच्छी तरह

  • एक कुलपति ++ पर objconv प्रयास कर रहा है उत्पन्न lib में विफल रहता है क्योंकि: "SQLite उदारीकरण एक आयात पुस्तकालय "

implib:

  • मैं sqlite.org से precompiled DLL डाउनलोड करने और implib उपयोग करते हैं, यह अल उत्पन्न करता है आईबी फ़ाइल है, लेकिन नाम mangling मिलान करने के लिए है, क्योंकि भले ही मैं स्थिर पुस्तकालय के साथ लिंक, मैं अभी भी एक ही SQLite त्रुटियों (अपरिभाषित प्रतीक _sqlite3_open, _sqlite3_errmsg, _sqlite3_close जैसे प्राप्त नहीं लगता है ...

coffimplib:

  • अगर मैं कुलपति ++ बनाया पुस्तकालय फ़ाइल पर coffimplib का उपयोग करें, कार्यक्रम के एक लगभग खाली फ़ाइल (~ 2KB) जो केवल कचरा होता है (यानी सब पर कोई प्रतीकों और ज्यादातर सिर्फ 'अशक्त' मान) उत्पन्न करता है।

  • यदि मैं जीसीसी निर्मित पुस्तकालय के साथ ऐसा करता हूं, तो coffimplib "आयात पुस्तकालय नहीं" के बारे में शिकायत करता है और कोई परिवर्तित लाइब्रेरी फ़ाइल उत्पन्न नहीं होती है।

अगर मैं डीएमसी का उपयोग sqlite3 समामेलन संकलित करने के लिए, संकलन टन त्रुटियों की शिकायत विफल रहता है। तो यहां मैं कहीं भी अटक गया हूं, क्या किसी के पास कोई विचार या सुझाव है जो इसे हल कर सकता है?

नोट: मैं एक डीएलएल का उपयोग नहीं करना चाहता, लेकिन स्थिर रूप से एसक्लाइट (निष्पादन योग्य आकार चिंताओं के लिए) के साथ लिंक करना चाहता हूं।

+0

क्या त्रुटियों आप सी संकलक के साथ मिलता है: क्या तुम सच में स्थिर libs की जरूरत है आप Unilink, जो OMF लिंक करने में सक्षम है और coff एक साथ फ़ाइलें बाहर की कोशिश कर सकते हैं? –

+0

टन और टन। सभी प्रकार की त्रुटियों (जैसे अवैध कास्ट, अज्ञात पहचान) –

+0

मैंने डाउनलोड किया और डीएमसी की कोशिश की, सभी को ठीक करने के लिए उन्हें बहुत अधिक आवश्यकता होगी; ऐसा लगता है कि डीएमसी के साथ भेजे गए विंडोज हेडर फाइलों में त्रुटियों के कारण त्रुटियां होती हैं। –

उत्तर

3

/system स्विच के साथ उपयोग करने का प्रयास करें।

+0

वास्तव में यह चाल है! यद्यपि इसने एक आयात लाइब्रेरी बनाई, स्थिर स्थैतिक नहीं, इसलिए निष्पादन योग्य अभी भी पूरे स्क्लाइट डीएल पर निर्भर करता है जब यह केवल 5 कार्यों का उपयोग करता है –

0

आप अपने डी अनुप्रयोग के साथ SQLite सी कोड को संकलित और लिंक क्यों नहीं करते हैं? मुझे लगता है कि पुस्तकालय से संबंधित सिरदर्द से आपको बचाएगा। dmd -of myproggy myproggy.d somefile.d libsqlite.lib

+0

डीएमसी संकलित करने में विफल रहता है (मेरी टिप्पणियां देखें) SQLite समामेलन। और अगर मैं लिंक करना चाहता हूं, तो वस्तुओं को ओएमएफ प्रारूप में होना चाहिए, और यह मेरी समस्या का मूल है! –

1

विंडोज पर आप DLLs के साथ बेहतर कर रहे हैं:

बेशक

एक अच्छा विकल्प डीएमसी के साथ SQLite स्थिर पुस्तकालय संकलन, और बस कार्य करके अपना विकास परियोजना के साथ इसका इस्तेमाल करने की है। आपको बहुत सारे सिरदर्द बचाता है।

x64 समर्थन पर कार्य चल रहा है जो मुझे लगता है कि सीओएफएफ + वीसी के लिंकर का लाभ उठाएगा। यह उम्मीद है कि अजीब स्थिति बदल जाएगी।

संपादित करें: ftp://ftp.styx.cabel.net/pub/UniLink

+0

हां, इस समय मैं इसका उपयोग कर रहा हूं, लेकिन सभी लाइब्रेरी साझा किए गए लोगों (जैसे dyncall) का समर्थन नहीं करते हैं और छोटे निष्पादन योग्य (निर्भरताओं के सापेक्ष) के उत्पादन के दौरान एप्लिकेशन आकार कूदता है –

+0

ने मेरी पोस्ट – Trass3r

+0

अपडेट की है अनिलिंक निश्चित रूप से एक दिलचस्प विकल्प है ! मैं इसे जांचूंगा (हालांकि उथले दस्तावेज)। क्या आपको कोई विचार है जब सीओएफएफ के लिए x64 समर्थन उपलब्ध होगा? –