c++ - static Member access linker problems -
जीएफ कोई getInstance विधि के साथ एक एकल वर्ग है
वर्ग gph {सार्वजनिक: स्थिर शून्य newfun (); स्थिर शून्य newfun1 (); //..// निजी: जीएफ (); };
इस वर्ग को एक स्थैतिक पुस्तकालय में बनाया जाता है
अब मेरे पास एक Dll है जहां से मुझे स्थिर फ़ंक्शन का उपयोग करने की आवश्यकता है। तो वर्ग ए डीएलएल का एक हिस्सा है
मेरे पास एक सी ++ सदस्य कार्य है
void A :: fun () {gph :: newfun (); // एक स्थिर फ़ंक्शन का उपयोग करना: लिंकर त्रुटियां देता है} दूसरी तरफ अगर मैं मज़ेदार () को स्थिर बना देता हूं तो मुझे कोई लिंकर त्रुटियां नहीं देतीं I लेकिन मैं मज़ेदार () को स्थैतिक के रूप में नहीं बनाना चाहता / चाहती हूं
लिंक्ड लाइब्रेरीज़, इसलिए यह उत्तर लागू नहीं हो सकता है, लेकिन समस्या में आपको सूचित कर सकता है। इसलिए उस आधार पर और जो मैं अभी देख रहा हूं, मेरा पहला विचार यह देखना होगा कि आप जिस डीएलएल का निर्माण कर रहे हैं, आपने स्थैतिक पुस्तकालय को शामिल किया है।
एक अनसुलझे प्रतीक आमतौर पर इसका अर्थ है कि या तो हस्ताक्षर मेल नहीं खाता है या आप आवश्यक पुस्तकालय शामिल नहीं कर रहे हैं यह संकलक से कंपाइलर के लिए भिन्न होता है, लेकिन अधिकतर आप लाइब्रेरी निर्देशिका (कभी-कभी एक कमांड लाइन में निर्दिष्ट करते हैं) और वास्तविक लाइब्रेरी को लिंक करने के लिए निर्दिष्ट करते हैं (कभी-कभी -l द्वारा चिह्नित)।
चूंकि मैं डीएलएल का इतना उपयोग नहीं करता, इसलिए मेरी समझ एक निष्पादन योग्य बनाने के समान है यदि आप डायनेमिक लिंकिंग का उपयोग करते हैं, तो आप जिस लाइब्रेरी को लिंक कर रहे हैं, उसे अपने निष्पादन योग्य में एम्बेड किया गया है, इसलिए आपका निष्पादन योग्य आकार छोटा है, लेकिन वह लाइब्रेरी पथ पर निर्भर है जिस पर वे चलती नहीं हैं।
इसलिए जब आप अपने डीएलएल का निर्माण कर रहे हैं, तो सुनिश्चित करें कि आपने सीपीपी के लिए कक्षा जीपी संकलित किया है और इसके लिए एक स्थैतिक पुस्तकालय बनाया है। तब जब आप इसे कक्षा ए में उपयोग करते हैं, तो आप लाइब्रेरी में हेडर और लिंक शामिल करते हैं।
Comments
Post a Comment