संभव डुप्लिकेट जोड़ें:
Windows & C++: extern & __declspec(dllimport)
Why/when is __declspec(dllimport) not needed?क्या __declspec करता है (dllexport) करते हैं, जब यह एक आयात समारोह से पहले
मुझे DLL परियोजना लिखना चाहते हैं। इस परियोजना में कई डीएलएल शामिल हैं। वे निर्भर हैं। मैं पालन जैसे कुछ मैक्रो निर्धारित:
#ifdef MYDLL_DECL1
#define DLL_DECL __declspec(dllexport)
#else
#define DLL_DECL __declspec(dllimport)
#endif
मैं प्रत्येक मॉड्यूल के लिए परिभाषित MYDLL_DECL1 ... MYDLL_DECLn। क्योंकि मैंने सोचा कि क्या मैं एक ही मैक्रो को परिभाषित करता हूं कि यह काम नहीं करेगा। लेकिन मैं वास्तव में केवल एक मैक्रो को परिभाषित करना चाहता हूं, और मैंने एक टेस्टबेड लिखा था। मेरे पास दो मॉड्यूल हैं। दूसरे moudle की स्रोत फ़ाइल में। मैं पालन की तरह कोड लिखने:
#define MYDLL_DECL
#include "moudle1.h"
#include "moudle2.h"
अगर मैं modle1 के सिर फ़ाइल के लिए एक ही मैक्रो का नाम "MYDLL_DECL", का उपयोग मैं "MYDLL_DECL" को परिभाषित किया है, इसलिए "DLL_DECL" '__declspec (dllexport)' के बराबर है। असल में मॉड्यूल 2 में यह "__declspec (dllimport)" के बराबर होना चाहिए, क्योंकि मॉड्यूल 2 आयात मॉड्यूल 1। लेकिन मैंने पाया कि यह काम करता है जब मैं दो मॉड्यूल के लिए एक ही मैक्रो को परिभाषित करता हूं। और मुझे यह भी पता चलता है कि ओपनसीवी इस मेथॉल्ड का उपयोग अपनी लाइब्रेरी
... क्या ?? आप अपने खुद के मैक्रो को परिभाषित किए बिना सीधे '__declspec (dllimport)' का उपयोग कर सकते हैं! –
http://stackoverflow.com/questions/4489441/why-when-is-declspec-dllimport-not-needed – Mohammad
__declspec (dllimport) सी/सी ++ का एक विनिर्देशक है। तो मैं – Samuel