2010-03-29 8 views
7

प्रश्न: क्या एक .dll फ़ाइल का उपयोग कर लिनक्स पर एक प्रोग्राम संकलित करना संभव है?लिनक्स पर एक .dll का उपयोग करना संभव है

यह कहां जा रहा है: यह .dll किसी तीसरे पक्ष से कुछ मालिकाना सॉफ़्टवेयर में एक PHP विस्तार लिखने के लिए उपयोग किया जाएगा।

पृष्ठभूमि और अनुसंधान:

मैं एक पुस्तकालय proprietary.lib बुलाया दिया गया है। है के रूप में मैं कभी नहीं .lib विस्तार पहले देखा मैं, उत्सुक था, इसलिए मैं आपके द्वारा लिखा गया:

file proprietary.lib 

उत्पादन किया गया था:

proprietary.lib: current ar archive 

मैं कुछ शोध किया और पाया कि ar अधिक या कम है tar (और वास्तव में, मुझे लगता है कि tar ने अधिकांश * निक्स वातावरण में ar को बदल दिया है)।

ar मैनपेज का निरीक्षण करने पर, मैंने t option देखा, जो उस संग्रह की सामग्री की तालिका सूची प्रदर्शित करता है। ठंडा। इसलिए मैं टाइप करें:

ar t proprietary.lib 

और मिलती है:

proprietary.dll 
proprietary.dll 
... (snip X lines) ... 
+2

यूनिक्स डीएलएल का उपयोग नहीं करता है। लिनक्स में संबंधित फ़ाइल प्रारूप "इतना" (साझा ऑब्जेक्ट्स) है और मैक ओएस एक्स में यह "डाइलिब" (गतिशील पुस्तकालय) और "बंडल" है। – kennytm

+1

आप देखते हैं, यह वह जगह है जहां भ्रम आता है। Compouring comp.lang.c से, ऐसा प्रतीत होता है कि "डीएलएल" लाइब्रेरी के लिए एक सामान्य शब्द है, ऐसा लगता है कि इसके लिए विंडोज का उपयोग होता है। क्या यह पुस्तकालय ईएलएफ प्रारूप में उस पुस्तकालय को पुन: सम्मिलित करने जैसा आसान है? –

+0

हां यह इतना आसान है। आपको उचित पुस्तकालय प्राप्त करने के लिए आप इस पुस्तकालय के विक्रेता को देख रहे हैं। – Broam

उत्तर

4

आप ar फ़ाइल निकालने का प्रयास कर सकते हैं (डेबियन पैकेज ar फ़ाइलें, fwiw हैं) और सामग्री पर file चलाएं।

आप अनुवाद के बिना विंडोज डीएलएल का उपयोग करने में सक्षम नहीं होंगे। लिनक्स पर मूल रूप से उस काम के बारे में मुझे पता है कि एकमात्र डीएलएल फाइलों को मोनो के साथ संकलित किया गया है।

अगर किसी ने आपको कोड के लिए मालिकाना बाइनरी लाइब्रेरी दी है, तो आपको यह सत्यापित करना चाहिए कि इसे लक्ष्य आर्किटेक्चर (x86 सिस्टम पर एआरएम बाइनरी का उपयोग करने की कोशिश करने की तरह कुछ भी नहीं) और यह लिनक्स के लिए संकलित है।

कहा जा रहा है ... शुभकामनाएं। मुझे तीसरे पक्ष के पुस्तकालयों के खिलाफ प्रोग्रामिंग से नफरत है जहां मेरे पास प्रलेखन और स्रोत है।

+0

में डबल क्लिक करें, एकमात्र .dll फ़ाइल पर फ़ाइल कमांड निकालने और पुनः चलाने का प्रयास किया गया था और आउटपुट "डेटा" था। –

+0

यदि यह किसी साझा ऑब्जेक्ट या किसी प्रकार की निष्पादन योग्य फ़ाइल के रूप में नहीं देखा जाता है ... तो आप भाग्य से बाहर हैं। – Broam

+0

@ ब्रूम हाय ब्रॉम, क्या मोनो के साथ सीधे डीएल फाइलों को संकलित करना संभव है? या क्या मुझे डीएलएल फ़ाइलों को सी ++ कोड में बदलने की आवश्यकता है और फिर इसे मोनो से संकलित करें? – Lokesh

8

.dll फ़ाइलें आमतौर पर विंडोज साझा पुस्तकालय हैं। (यह भी संभव है कि लिनक्स पर किसी ने नियमित लिनक्स लाइब्रेरी बनाई है और उसे किसी कारण से। डीएल कहा जाता है।)

यह संभव है कि आप Wine का उपयोग करके उनके खिलाफ लिंक कर सकें। इसके लिए समर्थन एक बार प्रयोगात्मक के रूप में था - मुझे इसकी वर्तमान स्थिति नहीं पता है।

1

हाल के विकास ने स्थिति बदल दी हो सकती है: लिनक्स के लिए loadlibrary फ़ंक्शन उपलब्ध है, जिससे विंडोज़ डीएलएल लोड करना संभव हो जाता है और फिर कार्यों को कॉल करना संभव हो जाता है।

तो, यदि .dll फ़ाइल वास्तव में आपके पास Windows DLL है, तो आपको इसे सॉफ़्टवेयर में उपयोग करने का एक तरीका मिल सकता है।

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