2011-08-07 4 views
5

के बीच संबंध मेरे पास dllexport, Windows में C++ में dllimport से संबंधित कुछ प्रश्न हैं। आइए मान लें कि मेरे पास module.cpp और module.h है जो dllexport का उपयोग करके निर्यात कार्यों का निर्यात करता है। आइए मान लें कि मेरे पास moduleWrapper.cpp और moduleWrapper.h भी है जो से dllimport का उपयोग करके फ़ंक्शन आयात करता है।dllimport और dllexport

क्या कोई मुझे बता सकता है कि मैं को moduleWrapper.cpp और moduleWrapper.h में क्यों लिख सकता हूं।

__declspec(dllexport) void f(); 

: मैं नहीं समझ सकता कैसे लिंकर कोई स्पष्टीकरण

+0

हमें कुछ और जानकारी की आवश्यकता होगी। यह देखने की तरह कि आपका आयात और निर्यात कैसा दिखता है। –

+0

क्या कोई मॉड्यूल.dll है? और लिंकर के लिए एक मॉड्यूल.लिब? –

उत्तर

7

के लिए पहले से module.cpp से काम करता है, धन्यवाद के पते के बारे में पता है मैं क्या समझ से, आप module.h में कुछ इस तरह की है और फिर, आप अपने moduleWrapper.cpp में एक ऐसी ही बयान है:

__declspec(dllimport) void f(); 

कि एक समारोह घोषणा के रूप में गिना जाता है, तो आप module.h शामिल करने के लिए किसी भी आवश्यकता को हटा दें। जिस तरह से यह आमतौर पर किया जाता है में निम्न कोड डाल कर अपने में शामिल फ़ाइल:

#ifdef PROJECTNAME_EXPORTS // (the default macro in Visual Studio) 
#define PROJECTAPI __declspec(dllexport) 
#else 
#define PROJECTAPI __declspec(dllimport) 
#endif 

और फिर इस तरह हेडर फाइल में अपने कार्य की घोषणा:

PROJECTAPI void f(); 

इस तरह, यह dllexport के लिए अनुवाद कर देगा जब आप अपने डीएलएल को संकलित कर रहे हैं, और किसी भी फाइल में dllimport करने के लिए जो आपके डीएलएल का हिस्सा नहीं हैं और यह हेडर का उपयोग करने के लिए होता है।

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