मुझे Apple Mach-O Linker (Id) Error और Undefined symbols in cryptopp at IOS 64-bit project जैसे उचित प्रश्नों की संख्या दिखाई देती है। समस्या आमतौर पर वर्णित के रूप में किया जाता है:एलएलवीएम के libC++ का उपयोग करते समय __1 प्रतीक कहां से आता है?
Undefined symbols for architecture i386:
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
cv::gpu::error(char const*, char const*, int, char const*) in opencv2(gpumat.o)
समस्या अक्सर मिश्रण/मिलान -stdlib=libc++
(LLVM सी ++ क्रम) और -stdlib=libstdc++
(जीएनयू सी ++ क्रम) को कम करता है। एलएलवीएम सी ++ रनटाइम (libc++
) में __1
सजावट प्रतीक है, लेकिन जीएनयू सी ++ रनटाइम libstdc++
__1
इसके नाम पर प्रतीक है। यह उन प्रतीकों के लिए लिंकर समस्याओं का कारण बनता है जो समान नाम होते हैं (जैसे std::string
)।
एलएलवीएम के libC++ का उपयोग करते समय __1
प्रतीक कहां से आता है?
क्यों समस्या नहीं एक gnu
नाम स्थान और एक llvm
नाम स्थान के साथ हल किया गया था?
यहां एक संबंधित प्रश्न है: libc++ - stop std renaming to std::__1?। लेकिन इस तरह की याद आती है कि एक नाम नहीं होता है।
पर
अधिक की तरह कुछ यह एक इनलाइन नाम स्थान कि libC++ संस्करण के लिए उपयोग करता है है। – Praetorian