नहीं, __declspec वीसी ++ विशिष्ट है।
वीसी ++ की आवश्यकता के कारणों में से एक कारण डिफ़ॉल्ट रूप से है, डीएलएल डीएलएल के बाहर प्रतीकों का पर्दाफाश नहीं करते हैं जब तक कि स्पष्ट रूप से ऐसा करने का अनुरोध न किया जाए। पॉज़िक्स पर, साझा ऑब्जेक्ट्स उनके सभी (स्थैतिक) प्रतीकों का पर्दाफाश नहीं करते हैं जब तक कि उन्हें स्पष्ट रूप से छिपाने के लिए कहा न जाए। ,
#ifdef WIN32
#ifdef EXPORT_CLASS_FOO
#define CLASS_FOO __declspec(dllexport)
#else
#define CLASS_FOO __declspec(dllimport)
#endif
#else
#define CLASS_FOO
#endif
class CLASS_FOO foo
{ ... };
परियोजना में वर्ग को लागू करने:
अद्यतन
अपनी टिप्पणी है कि आप अपने कोड पोर्टेबल बनाना चाहते आधार पर, आप पूर्वप्रक्रमक का उपयोग करें और इस तरह से कुछ करना चाहता हूँ एक प्रीप्रोसेसर परिभाषा के रूप में EXPORT_CLASS_FOO को जोड़ने के लिए सुनिश्चित करें (प्रोजेक्ट | NAME गुण .. सी/सी ++ के तहत .. प्रीप्रोसेसर | प्रीप्रोसेस परिभाषाएं)। इस तरह, आप डीएलएल बनाने के दौरान उन्हें निर्यात करेंगे, जब आप डीएलएल का उपयोग कर रहे हों तो उन्हें आयात करें और यूनिक्स के तहत कुछ खास नहीं करें।
स्रोत
2010-01-16 01:22:28
प्रश्न के पीछे विचार अलग-अलग प्रणालियों (जीत, लिनक्स, * बीएसडी) में कोड संकलित करने में सक्षम होना है, लेकिन विंडोज़ पर विकसित करना (मुझे दृश्य स्टूडियो और टूल्स जो यह प्रदान करता है (सभी के साथ आने वाले संस्करण में भी अधिक समांतर उपकरण उपलब्ध !!)) और यह mingw और msvc के साथ विंडोज़ पर त्वरित रूप से संकलित करने के लिए यह जांचने के लिए कि कोड "दिखता है" ठीक है। यह पोर्ट को लिनक्स को तेज़ और आसान बना देगा – user246456