Tôi đã thực hiện các liên kết FFI với vùng chứa C++ unordered_map (a.k.a. Hash_map) và thư viện trình bao bọc của nó được gọi là libstl.a
. Lần đầu tiên, nó hoạt động tốt. Nhưng sau một thời điểm nào đó, nó đã thất bại trong việc liên kết thư viện với các thông báo lỗi sau và tôi không thể hiểu tại sao.liên kết các thư viện/đối tượng thừa không thành công
$ 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
Mã nguồn cho thư viện nằm ở https://github.com/comatose/stl-container. Mọi trợ giúp sẽ được đánh giá cao.
sẽ 'strip'ping các file .o làm việc? – ocramz
Đã lâu rồi tôi mới xem xét điều này. Tôi không nghĩ rằng dải là bất kỳ giúp đỡ, nhưng tôi không chắc chắn 100%. Các phiên bản của GHC 7.8 trở lên dường như có thể tải các thư viện có ký hiệu yếu, vì vậy chúng không có vấn đề này. –