2013-02-21 11 views
5

मैं सी ++ unordered_map (a.k.a। Hash_map) कंटेनर और उसके आवरण पुस्तकालय libstl.a बुलाया FFI बाइंडिंग बनाया विफल रहा है। पहले समय में, यह अच्छी तरह से काम करता था। लेकिन कुछ बिंदु के बाद, यह लाइब्रेरी को निम्न त्रुटि संदेशों से जोड़ने में विफल रहा है और मैं यह नहीं समझ सकता कि क्यों।जोड़ने अतिरिक्त पुस्तकालयों/वस्तुओं

$ ghci -L. -lstl -lstdc++ 
GHCi, version 7.6.2: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Loading object (static archive) ./libstl.a ... done 
Loading object (dynamic) /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so ... done 
final link ... ghc: ./libstl.a: unknown symbol `_ZZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEmE10__fast_bkt' 
linking extra libraries/objects failed 

लाइब्रेरी के लिए स्रोत कोड https://github.com/comatose/stl-container में स्थित है। किसी भी मदद की सराहना की जाएगी।

उत्तर

1

मैं GHCi में फ़ाइलों ओ लोड हो रहा है इसी तरह की समस्याओं था। मैं क्या समझ से, समस्या यह है कि जी ++ पत्ते 'कमजोर प्रतीकों' ओ फ़ाइलें, और GHCi में उन लोगों के साथ बहुत अच्छी तरह से निपटने के नहीं करता है।

मैं एक उपयोगी अनुवर्ती के साथ इस बारे में एक धागा मिला: जिसमें

http://www.haskell.org/pipermail/haskell-cafe/2012-March/099926.html

सुझाव दिया समाधान (ए के बजाय फाइलों .so) साझा पुस्तकालयों में जी ++ द्वारा संकलित सब कुछ डाल करने के लिए है , और यह कमजोर प्रतीक समस्या को स्पष्ट करने लगता है। साझा पुस्तकालय दर्द का थोड़ा सा हो सकता है। मेरा सुझाव है कि आप libtool देखें।

http://www.gnu.org/software/libtool/

+0

'ओ फ़ाइलें काम strip'ping हैं: यह एक सहायक कार्यक्रम है कि जटिलताओं का एक बहुत संभाल कर सकते हैं क्या है? – ocramz

+0

यह थोड़ी देर हो गया है क्योंकि मैंने इसे देखा था। मुझे नहीं लगता कि स्ट्रिप कोई मदद थी, लेकिन मैं 100% निश्चित नहीं हूं। GHC 7.8 के संस्करण और बाद में कमजोर प्रतीकों के साथ पुस्तकालयों लोड करने में सक्षम होने लगते हैं, इसलिए वे इस समस्या नहीं है। –

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