2013-03-28 8 views
8

को लक्षित करते समय लिंक त्रुटियां मैं अपने प्रोजेक्ट में XML फ़ाइलों को पार्स करने के लिए tinyxml लाइब्रेरी का उपयोग कर रहा हूं। "निजी: स्थिर struct TiXmlString :: निरसित TiXmlString :: nullrep_" अनसुलझे बाह्य प्रतीक:Tinyxml - x64 प्लेटफार्म

त्रुटि 4 LNK2001 त्रुटि: जब मैं 64 प्लेटफार्मों मैं लिंकर त्रुटियों मिल लक्षित करने के लिए कोशिश करते हैं और उन्हें यहां के लिए एक है (? nullrep_ @ TiXmlString @@ 0URep @ 1 @ ए) ClassThatUsesTinyXML.obj

अद्यतन: मैं लगा कि tinyxml का x64 संस्करण स्थापित नहीं किया गया था लेकिन जब मैं 64 प्लेटफार्मों के लिए पुस्तकालय का निर्माण करने की कोशिश की मैं यह त्रुटि आई :

LNK1561: entry point must be defined 
+2

कृपया त्रुटियों के _all_ पोस्ट करें। मैं शीर्ष पर कहीं भी शर्त लगाऊंगा कि एक त्रुटि यह कह रही है कि यह सही पुस्तकालय नहीं ढूंढ पा रहा है। क्या आपने 64-बिट लाइब्रेरी स्थापित की है? –

+0

नहीं मैंने ^^ 'नहीं किया था। मैंने अभी x64 प्लेटफार्मों के लिए tinyxml बनाने की कोशिश की लेकिन मैं नहीं कर सका। त्रुटि ' त्रुटि LNK1561:: यहाँ त्रुटि मैं जब tinyxml निर्माण हो गया है प्रवेश बिंदु \t पथ परिभाषित किया जाना चाहिए \ tinyxml_2_6_2 \ tinyxml \ लिंक ' – Kira

+0

@JoachimPileborg मेरी अद्यतन – Kira

उत्तर

5
इसके बजाय x64 platforms के लिए tinyxml निर्माण और उसके बाद परियोजना के लिए tinyxml.h और tinystr.h जोड़ने की

, मैं सिर्फ .cpp फ़ाइलों सहित सभी पुस्तकालय फ़ाइलें जोड़ा गया है और अब मैं जब 64 प्लेटफ़ॉर्म को लक्ष्य बना सकते हैं, पुस्तकालय है, वास्तव में, निर्माण किया जा रहा मैं पूरी परियोजना का निर्माण करें।

+2

यह वास्तव में tinyxml साझा लाइब्रेरी का उपयोग नहीं करता है - यह केवल स्थिर संबंधों का कुछ बदसूरत रूप है। ध्यान दें कि यदि आप tinyxml के नए संस्करण का उपयोग करना चाहते हैं तो आपको अपने ऐप को फिर से कंपाइल करना होगा (लेकिन क्या यह वैसे भी बदलता है?) –

3

ऐसा लगता है कि साझा लाइब्रेरी बॉक्स के बाहर साझा लाइब्रेक्स का समर्थन नहीं करता है।

ये कदम उठाएँ कि मैं tinyxml 2.6.2 स्रोतों से एक DLL का निर्माण करने का पालन कर रहे हैं:

  1. ओपन प्रदान की SLN फ़ाइल, tinyxml.sln, Windows डेस्कटॉप के लिए एमएस विजुअल स्टूडियो एक्सप्रेस 2012 में। संकेत दिए जाने पर पुराने प्रोजेक्ट फ़ाइलों को नए प्रारूप में बदलने के लिए चुना गया।
  2. "समाधान प्लेटफ़ॉर्म" से, "कॉन्फ़िगरेशन मैनेजर ..."
  3. से चुनें "सक्रिय समाधान मंच:" का चयन करें "< नई ... >"
  4. में "टाइप करें या नए मंच का चयन करें:" का चयन करें "x64" अगर पहले से नहीं चुना गया है। "Win32" कॉन्फ़िगरेशन से सेटिंग्स कॉपी करने के लिए सुनिश्चित करें। ओके पर क्लिक करें। कॉन्फ़िगरेशन प्रबंधक से बाहर निकलने के लिए बंद करें पर क्लिक करें।
  5. समाधान एक्सप्लोरर में tinyxml प्रोजेक्ट पर राइट क्लिक करें। "गुण" का चयन करें।
  6. "कॉन्फ़िगरेशन:" के लिए, "सभी कॉन्फ़िगरेशन" का चयन करें। इसी तरह, "प्लेटफार्म:" के लिए "सभी प्लेटफार्म" चुनें।
  7. कॉन्फ़िगरेशन गुण → सामान्य पृष्ठ पर, "कॉन्फ़िगरेशन प्रकार" को "डायनामिक लाइब्रेरी (.dll)" में बदलें। "लक्ष्य एक्सटेंशन" को ".dll" में बदलें। Tinyxml गुण पेज संवाद से बाहर निकलने के लिए ठीक क्लिक करें।
  8. "रिलीज" कॉन्फ़िगरेशन और "x64" प्लेटफ़ॉर्म का चयन करें।
  9. फिर से समाधान एक्सप्लोरर में tinyxml प्रोजेक्ट पर राइट क्लिक करें और "पुनर्निर्माण" का चयन करें।
tinyxml_2_6_2\tinyxml\x64\Release भीतर

आप tinyxml.dll मिलेगा, लेकिन कोई आयात पुस्तकालय (tinyxml.lib)। ऐसा इसलिए है क्योंकि कोई प्रतीक निर्यात नहीं किया जाता है। देखें How do I build an import library (.lib) AND a DLL in Visual C++?

यदि आप साझा लाइब्रेरी मार्ग पर जाना चाहते हैं, तो आपको एमएसवीसी-विशिष्ट __declspec(dllexport) संशोधक के माध्यम से वांछित प्रतीकों को निर्यात करने की आवश्यकता होगी। Symbol Visibility in Windows देखें।

1

त्रुटियां तब होती हैं जब आप लाइब्रेरी के संकलन के लिए TIXML_USE_STL को परिभाषित करते हैं, लेकिन लाइब्रेरी से लिंक करने वाले स्रोतों के लिए नहीं।अंत परिणाम यह है कि लाइब्रेरी का उपयोग पुस्तकालय का उपयोग कर स्रोतों से अलग कोड के साथ संकलित किया गया है।

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