तो आम (कम से कम 2005 राज्यों) एक DLL के लिए निर्यात/आयात परिभाषित करने के लिए तरीका है:ही हैडर फ़ाइल
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API MyClass {
...
};
यह अच्छा काम करता है अगर मैं निर्माण कर रहा हूँ मेरी एक डीएलएल के रूप में कोड। हालांकि, मैं एक स्थिर पुस्तकालय या एक डीएलएल का उपयोग करने का विकल्प चाहते हैं। अब एक स्पष्ट (लेकिन भयानक) समाधान, डीएलएल 'MY_API' परिभाषित करने, सभी कोड की प्रतिलिपि बनाना है। अब एक बेहतर तरीका प्रतीत होता है कि कमांड लाइन स्विच या तो डीएलएल सामान को परिभाषित करने के लिए परिभाषित करता है या परिभाषित नहीं करता है। हालांकि एक स्थिर पुस्तकालय के मामले में 'MY_API' क्या होना चाहिए?
#ifdef DLL_CONFIG
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
#else
#define MY_API // What goes here?
#endif
class MY_API MyClass {
...
};
अब यह सोचते हैं कि यह किया जा सकता है वहाँ मुद्दों होगा जब पुस्तकालय का एक उपयोगकर्ता हेडर फाइल भी शामिल है (यानी। वे 'DLL_CONFIG' को परिभाषित करना होगा)?