2016-05-08 17 views
5

Tôi đang cố gắng tạo cấu trúc dữ liệu sẽ được hiển thị trong Haskell, nhưng được triển khai trong C++. Cho đến nay tôi đã triển khai nó trong tệp .cpp, đã khai báo tất cả các hàm tôi cần là extern "C" và thêm tệp nguồn vào trường c-sources trong tệp .cabal. Khi tôi xây dựng dự án (trong trường hợp này với stack build) có vẻ như xây dựng tốt.Bao gồm các nguồn C++ trong dự án Haskell

Tôi biết nó đang làm một cái gì đó vào tệp C++ vì nó không biên dịch nếu có lỗi.

Tôi chưa thử chạy dự án vì nó là thư viện và cho đến nay nó không có bất cứ thứ gì "runnable" được viết, nhưng bản repl có vẻ không hoạt động.

Khi tôi thử chạy nó (stack repl trong trường hợp này), tôi gặp lỗi biểu tượng bị thiếu với một số tên bị xáo trộn có thể có hoặc không thể tham chiếu đến tên trong tệp của tôi.

unknown symbol `_ZdlPv' 
linking extra libraries/objects failed 

Làm cách nào để khắc phục sự cố này? Tôi đã có một vấn đề tương tự trước đó mà tôi cố định bằng cách biên dịch thủ công nguồn vào một thư viện động và sau đó sử dụng thư viện đó trong dự án của tôi. Tôi không muốn làm điều đó vì nó liên kết tôi với một nền tảng và vì nó không có nghĩa là một C++ đơn giản không thể được biên dịch với dự án bằng cách sử dụng các công cụ mà GHC đã có. Tôi muốn để có thể đặt điều này trên hackage.

Có điều gì tôi thiếu không? Nếu không, nó là một lỗi và có kế hoạch sửa chữa nó?

+0

Vui lòng thêm thông báo lỗi chính xác và [mcve]. – Zeta

+2

đây là một ví dụ cho gói cabal có chứa nguồn C++ https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42

+0

@Zeta Đây không phải là kiểu câu hỏi. –

Trả lời

2

Ok, tôi đã quản lý để "khắc phục" tính năng này ngay bây giờ.

Tôi đã thêm extra-libraries: stdc++-6, gcc_s_seh-1 vào tệp cabal của mình và giờ nó hoạt động. Không có ý tưởng nếu điều này là độc lập nền tảng nhưng những thư viện không được vận chuyển với GHC khi tôi cài đặt nó thông qua ngăn xếp.

Các vấn đề liên quan