मैं डेटा संरचना बनाने की कोशिश कर रहा हूं जिसे हास्केल में उजागर किया जाएगा, लेकिन सी ++ में लागू किया जाएगा। अब तक मैंने इसे .cpp
फ़ाइल में कार्यान्वित किया है, मुझे extern "C"
के रूप में आवश्यक सभी कार्यों की घोषणा की है और .cabal
फ़ाइल में c-sources
फ़ील्ड में स्रोत फ़ाइल को जोड़ा गया है। जब मैं प्रोजेक्ट का निर्माण करता हूं (इस मामले में stack build
के साथ) ऐसा लगता है कि यह ठीक है।हास्केल प्रोजेक्ट में सी ++ स्रोतों सहित
मुझे पता है कि यह कुछ सी ++ फ़ाइल में कर रहा है क्योंकि त्रुटियों में यह संकलित नहीं होता है।
मैंने अभी तक प्रोजेक्ट को चलाने का प्रयास नहीं किया है क्योंकि यह एक लाइब्रेरी है और अब तक इसमें "रननेबल" कुछ भी नहीं है, लेकिन प्रतिकृति काम नहीं कर रही है।
जब मैं इसे चलाने की कोशिश करता हूं (stack repl
इस मामले में) मुझे कुछ उलझन वाले नाम के साथ एक लापता प्रतीक त्रुटि मिलती है जो मेरी फ़ाइल में किसी नाम का संदर्भ हो सकता है या नहीं।
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
मैं इस समस्या को कैसे ठीक कर सकता हूं? इससे पहले कि मैंने स्रोत को गतिशील लाइब्रेरी में मैन्युअल रूप से संकलित करके तय किया है और फिर मेरी प्रोजेक्ट में उस लाइब्रेरी का उपयोग करके तय किया गया है। मैं ऐसा नहीं करना चाहता क्योंकि यह मुझे एक प्लेटफॉर्म से जोड़ता है और चूंकि इसका कोई मतलब नहीं है कि जीएचसी के पहले से मौजूद टूल का उपयोग करके प्रोजेक्ट के साथ एक सरल सी ++ संकलित नहीं किया जा सका। मैं इसे हैकेज पर रखने में सक्षम होना चाहता हूं।
क्या मुझे कुछ याद आ रही है? यदि नहीं, तो क्या यह एक बग है और क्या इसे ठीक करने की योजना है?
कृपया सही त्रुटि संदेश और एक [mcve] जोड़ें। – Zeta
यहां एक कैबल पैकेज के लिए एक उदाहरण है जिसमें सी ++ स्रोत शामिल हैं https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zeta यह एक प्रश्न का प्रकार नहीं है। –