2015-09-06 4 views
41

एक शोध परियोजना के लिए, मैं एक वैज्ञानिक कंप्यूटिंग भाषा में एक सी ++ ऐड-ऑन लिख रहा हूं। दुर्भाग्य से लाइब्रेरी जो उपयोगकर्ताओं को ऐसा करने की अनुमति देती है, उसे बहुत अच्छी तरह से अद्यतित नहीं रखा जाता है।सी ++: विजुअल स्टूडियो 2015 में अनसुलझा बाहरी प्रतीक _sprintf और _sscanf

मैंने एक्सकोड में प्रोजेक्ट शुरू किया, जहां यह ठीक बनाया गया। बाद में मैं एक पीसी के लिए ले जाने के लिए किया था, तो मैं दृश्य स्टूडियो 2015 के लिए कोड माइग्रेट ऐसा करने के बाद से, मैं नहीं किया है निर्माण करने में सक्षम निम्नलिखित त्रुटियों के कारण किया गया:

LNK2001 : unresolved external symbol _sprintf 
LNK2019 : unresolved external symbol _sscanf referenced in function _GetDDouble 
LNK2019 : unresolved external symbol _sprintf referenced in function _CheckRunningInMainThread 

एक प्रयास किया फिक्स जोड़ने के लिए था हेडर #define _CRT_SECURE_NO_WARNINGS। हालांकि, यह ए) निश्चित त्रुटियों और बी) चेतावनी C4005 : '_CRT_SECURE_NO_WARNINGS': macro redefinition जोड़ा। मुझे लगता है कि पुस्तकालय पहले से ही इस मैक्रो को परिभाषित करता है, इस समस्या का अनुमान लगाता है। भले ही, इसने समस्या को हल नहीं किया।

मुझे आगे कैसे बढ़ना चाहिए?

उत्तर

112

लिंकर इनपुट फ़ाइलों के लिए निम्न पुस्तकालय जोड़ें:

legacy_stdio_definitions.lib 

वी.एस. अब 2015 इनलाइन परिभाषाओं कि stdio.h कार्यों के कई के लिए आंतरिक कार्यों फोन का उपयोग करता है। यदि कोई ऑब्जेक्ट फ़ाइल (या लाइब्रेरी सदस्य) उन कार्यों में से किसी एक पर निर्भर करता है, तो legacy_stdio_definitions.lib फ़ंक्शन का बाहरी लिंक करने योग्य संस्करण प्रदान करता है जिसे से जोड़ा जा सकता है।

आपका दूसरा विकल्प यूनिट को पुन: संकलित करना है जो वीएस 2015 के साथ उन कार्यों पर निर्भर करता है (यह शायद पसंदीदा विकल्प है)।

+0

उन्होंने बहुत समय के साथ ऐसा किया। – user4581301

+0

@ user4581301: क्या आप विस्तृत कर सकते हैं? –

+1

क्षमा करें। सहायक, भले ही एक रैपर के साथ, पुरानी stdio सामान wailing और moaning बिना। प्रत्येक अब और फिर स्नप्रिंटफ नौकरी के लिए बिल्कुल सही उपकरण है, और मुझे बॉक्स में आने वाले किसी चीज़ के लिए पोर्टेबिलिटी रैपर करने से नफरत है। – user4581301

0

मुझे यह त्रुटि संस्करण 5 अधिकतम एसडीके (शुद्ध सी एपीआई) के खिलाफ साइक्लिंग अधिकतम प्लगइन संकलित करने में मिली है। विरासत पुस्तकालय फिक्स मेरे लिए काम नहीं करता है (यह होना चाहिए, और यदि किसी को पता था कि यह क्यों उत्सुक नहीं हो सकता है), लेकिन मैंने stdio लोड होने से पहले _NO_CRT_STDIO_INLINE परिभाषित किया और उसने चाल की।

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