में प्रोग्राम लाइब्रेरी बनाना मैं अपने सी ++ प्रोग्राम में पुस्तकालयों का उपयोग करने की योजना बना रहा हूं। लिनक्स पर विकास हो रहा है लेकिन एप्लिकेशन को लिनक्स और विंडोज दोनों पर संकलित करने के लिए डिज़ाइन किया गया है। मैं विंडोज़ में साझा पुस्तकालयों (.so) के लिए प्रत्यक्ष समकक्ष समझता हूं डीएलएल है, है ना?विंडोज और लिनक्स [सी ++]
जी ++ का उपयोग कर लिनक्स में, मैं -fPIC
और -shared
झंडे का उपयोग करके साझा लाइब्रेरी बना सकता हूं। AFAIK, साझा लाइब्रेरी के लिए कोई अन्य कोड परिवर्तन आवश्यक नहीं है। लेकिन विंडोज़ डीएलएल में चीजें अलग हैं। वहां मुझे उन कार्यों को निर्दिष्ट करना होगा जिन्हें dllexport का उपयोग करके निर्यात किया जाना चाहिए, है ना?
मेरा सवाल है कि मैं इस स्थिति का प्रबंधन कैसे करूं? मेरा मतलब है dllexport लिनक्स में अमान्य है और संकलक एक त्रुटि देगा। लेकिन विंडोज़ में इसकी आवश्यकता है। तो मैं एक फ़ंक्शन कैसे लिखूं जो बिना किसी कोड परिवर्तन के दोनों प्लेटफॉर्म पर संकलित होगा?
संकलनकर्ता
- इस्तेमाल किया जी ++ - लिनक्स
- कुलपति ++ - विंडोज
किसी भी मदद की बहुत अच्छा होगा!
धन्यवाद। खिड़कियों में बनाए गए डीएलएल का प्रकार क्या होगा? क्या वह एक COM डीएल होगा? क्या डीएलएल नरक के मुद्दों में भाग लेने की संभावना है? –
dllexport का उपयोग करने से डीएल को COM सिस्टम में उजागर नहीं किया जाता है। डीएल नरक की संभावना इस बात पर निर्भर करती है कि आप डीएलएल और एप्लिकेशन को कैसे वितरित करते हैं। यदि आप हमेशा अपने ऐप की आवश्यकता वाले डीएलएस को स्थापित करते हैं, तो समस्या यह डीएलएल से संबंधित है, यह कोई मुद्दा नहीं है। –
@sean ई: धन्यवाद। मैं हमेशा डीएलएल के ऐप को एप्लिकेशन निर्देशिका में स्थापित करने की आवश्यकता रखूंगा। कभी-कभी छोटे अपडेट हो सकते हैं जो पूरे एप्लिकेशन की बजाय एक डीएलएल को प्रतिस्थापित करेंगे। क्या यह एक समस्या हो सकती है? –