Friday, 15 June 2012

visual studio - VC++ specify library order - error LNK2005: already defined -


मैं एक संपूर्ण विज़ुअल स्टूडियो समाधान को wxWidgets-2.6.4 (A) से wxWidgets-3.0.2 (B) । एक समस्या है क्योंकि कुछ प्रोजेक्ट wxhttpengine-2.0 (Z) का उपयोग करते हैं, जो 2.6.x से अधिक नए wxWidgets के संस्करणों के साथ काम नहीं करता है। प्रश्नों को सरल बनाने के लिए, मैंने ए, बी और जेड अक्षरों के साथ 3 स्थैतिक पुस्तकालयों को लेबल किया है। तो, मेरे समाधान में ए और जेड, ज़ में ए के हिस्से हैं, लेकिन मैं Z का रखरखाव करने के बजाय A का उपयोग करते हुए B का उपयोग करना चाहता हूं मेरे समाधान के कोड को आसान बनाने के लिए समस्या यह है कि केवल एक त्रुटि के कारण - LNK2005: पहले से ही httpengine.lib में परिभाषित - wxWidgets.3.0.2 स्थिर पुस्तकालयों के लिए ए और बी से विरोधी प्रतीकों को लिंकर द्वारा खोजा जाता है क्योंकि Z ए के शीर्ष पर बनाया गया है।

सामान्य प्रश्न: मैं जे से किस प्रोजेक्ट को ए से अपग्रेड कर सकता हूं?

< P> विशिष्ट प्रश्न: क्या दृश्य स्टूडियो में निर्दिष्ट करना संभव है जिसे मैं बी के साथ पहले और फिर जेड के साथ जोड़ना चाहता हूं

यहाँ एक नमूना त्रुटि है:

त्रुटि 1 त्रुटि LNK2005: "सार्वजनिक: वर्ग wxSize __thiscall wxWindowBase :: GetBestSize (शून्य) स्थिरांक" (? GetBestSize @ wxWindowBase @@ QBE AVwxSize @@ XZ) \ wxmsw30ud_core.lib पहले से ही में httpengined.lib (proxysettingsdlg.obj) पथ परिभाषित (Hidden_filename.obj)

आप wxWidgets के दो अलग-अलग संस्करणों के साथ स्थिर रूप से लिंक नहीं कर सकते । सबसे अच्छा आप कर सकते हैं गतिशील रूप से कम से कम एक के साथ लिंक करने के लिए और, भ्रम से बचने के लिए, संभवतः उन दोनों के साथ बेहतर होगा।

हालांकि मैं वास्तव में देख रहा हूं कि वास्तव में wxhtttpengine के साथ काम क्यों नहीं करता WxWidgets 3.0 इसे ठीक करने के लिए कठिन नहीं होना चाहिए और लाइब्रेरी के एक संस्करण का उपयोग करना बहुत आसान है।


No comments:

Post a Comment