मैं/सी ++ DLL एक सी लिख रहा हूँ और कुछ कार्य करता है जो मैं इसअतिभारित कार्यों में सी ++ DLL डीईएफ़ फ़ाइल
LIBRARY "MyLib"
EXPORTS
Foo
Bar
कोड के साथ
के रूप में परिभाषित की तरह एक .def फ़ाइल उपयोग करने से पहले किया है निर्यात करना चाहते हैं इस, के लिए उदाहरण:
int Foo(int a);
void Bar(int foo);
हालांकि, क्या मैं एक ओवरलोड) की तरह फू की विधि (घोषित करने के लिए चाहते हैं:
int Foo(int a, int b);
घ के रूप में ef फ़ाइल में केवल फ़ंक्शन का नाम है और पूर्ण प्रोटोटाइप नहीं है, मैं नहीं देख सकता कि यह अधिभारित कार्यों को कैसे संभालेगा। क्या आप सिर्फ एक प्रविष्टि का उपयोग करते हैं और फिर लोडलाब्रिरी() में उचित प्रोटोटाइप फ़ंक्शन पॉइंटर में गुजरते समय आप जो ओवरलोडेड संस्करण चाहते हैं उसे निर्दिष्ट करते हैं?
संपादित करें: जवाब के रूप में गैर-डीईएफ़ (__declspec) विधि में चिह्नित किए गए ... मुझे पता है यह वास्तव में समस्या का उपयोग कर समाधान नहीं करता है: स्पष्ट है कि, इस Windows दृश्य स्टूडियो का उपयोग कर 2005
संपादित करें पर है डीफ़ फाइलों को मैं चाहता था, लेकिन ऐसा लगता है कि डीफ़ फाइलों का उपयोग कर कोई (आधिकारिक) समाधान नहीं है। सवाल खुल जाएगा, हालांकि, अगर किसी को कुछ पता है तो हमारे पास ओवरलोडेड फ़ंक्शंस और डीफ़ फाइलें नहीं हैं।
क्या होगा यदि हम एक गतिशील DLL के साथ GetProcAddress() का उपयोग कर रहे हैं? – null
फिर आपको उलझन वाले नामों का उपयोग करने, या कार्यों में से किसी एक का नाम बदलने और उन्हें 'बाहरी "सी' 'बनाने की आवश्यकता है, मान लीजिए कि इनमें से कोई भी C++ ऑब्जेक्ट्स लेता है या देता है। –