2015-05-26 3 views
11

मैं अपनी परियोजना को VS2008 से VS2015 में माइग्रेट करते समय त्रुटि से नीचे आ रहा हूं।अनसुलझा बाहरी प्रतीक __imp____iob_func फ़ंक्शन में संदर्भित _OpenSSLDie

21>TFCLd.lib(cryptlib.obj) : warning LNK4217: locally defined symbol _fprintf imported in function _OpenSSLDie 
21>TFCLd.lib(rsa_sign.obj) : warning LNK4049: locally defined symbol _fprintf imported 
21>TFCLd.lib(cryptlib.obj) : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _OpenSSLDie 
21>TFCLd.lib(rsa_sign.obj) : error LNK2001: unresolved external symbol __imp____iob_func 

परियोजना वीएस -2008 में बना है लेकिन वीएस2015 में उपरोक्त त्रुटि के साथ। क्या मुझे पता चलेगा कि मुझे क्या याद आ रही है।

+2

आप कोड को लिंक कर रहे हैं जो/एमटी के साथ संकलित कोड के साथ/एमटी के साथ संकलित किया गया था। आमतौर पर वह कोड लाइब्रेरी में स्थित होता है। यह गलती बहुत ही खराब रनटाइम त्रुटियों का कारण बन सकती है, यह महत्वपूर्ण है कि एक साथ जुड़े सभी कोड एक ही सेटिंग के साथ संकलित हो जाएं। उपयोग/एमटी मत करो। –

+0

मेरे सभी कोड/एमडी के साथ निर्मित हैं। मुझे अभी भी त्रुटि मिलती है। एक – user3665224

उत्तर

12

में इस रखो अपने वर्ग हेडर फाइल की या stdafx.h में शुरू हो

FILE _iob[] = { *stdin, *stdout, *stderr }; 
extern "C" FILE * __cdecl __iob_func(void) { return _iob; } 
+0

संकेत के लिए धन्यवाद, मैं इस चाल का उपयोग करके पुरानी बाइनरी-केवल लाइब्रेरी के साथ निर्माण कर सकता हूं (और 'legacy_stdio_definitions.lib' से भी लिंक कर रहा हूं और ऐसा लगता है कि यह ठीक काम करता है। –

+0

यह चाल लिंक त्रुटि हल करती है, हालांकि यह चेतावनी उत्पन्न करती है एलएनके 4217: स्थानीय रूप से परिभाषित प्रतीक ___iob_func फ़ंक्शन में आयात किया गया ... (जब VS2017 के साथ पुराना एसडीएल बनाते हैं) – AntonK

3

पर एक नज़र डालें: openssl में फ़ाइल e_os.h की लाइन 310 बदलने
http://openssl.6102.n7.nabble.com/Compiling-OpenSSl-Project-with-Visual-Studio-2015-td59416.html


# if _MSC_VER> =1300
से रूट निर्देशिका
# if _MSC_VER> =1300 && _MSC_VER <= 1800
समस्या फिक्स करने के लिए।

विजुअल स्टूडियो 2015 में पुराने नाम के साथ पुस्तकालयों

विजुअल स्टूडियो 2015 को बदल दिया गया _MSC_VER == 1900 में जाना जाता है:

मूल पोस्टर समस्या का कारण वर्णन करता है।

1

सुनिश्चित करें कि आपके libcurl.lib ही आईडीई (MSVC 2015) अपने आवेदन के रूप में के साथ संकलित किया गया है।

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