2016-05-08 16 views
5

私はHaskellで公開されるがC++で実装されるデータ構造を作ろうとしています。これまでのところ、.cppファイルに実装し、必要なすべての関数をextern "C"として宣言し、.cabalファイルのc-sourcesフィールドにソースファイルを追加しました。プロジェクトをビルドすると(この場合はstack buildとなります)、うまく構築されているようです。HaskellプロジェクトにC++ソースを含める

エラーがあるとコンパイルされないので、何かをC++ファイルに書き込んでいます。

これはライブラリなのでまだ実行しようとしていませんが、これまでのところ「実行可能」と書かれたものはありませんが、replは動作していないようです。

私はこのファイル(この場合はstack repl)を実行しようとすると、ファイル内の名前を参照する場合とそうでない場合がある、一部の文字化けしたシンボルエラーが発生します。

unknown symbol `_ZdlPv' 
linking extra libraries/objects failed 

どうすればこの問題を解決できますか?私は手動で動的ライブラリにソースをコンパイルして、私のプロジェクトでそのライブラリを使用することで修正する前に、同様の問題を抱えていました。 GHCがすでに持っているツールを使って、単純なC++をプロジェクトでコンパイルすることができないということは意味がないので、私はそれをプラットフォームに結びつけているからです。私はこれをハッキングにすることができるようにしたい。

紛失しているものがありますか?そうでなければ、それはバグですか、それを修正する計画はありますか?

+0

正確なエラーメッセージと[mcve]を追加してください。 – Zeta

+2

ここにC++ソースが含まれているキャバルパッケージの例があります。https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42

+0

@Zetaこれはそのタイプの質問ではありません。 –

答えて

2

[OK]を、私は今これを "修正"することができました。

私はCabalファイルにextra-libraries: stdc++-6, gcc_s_seh-1を追加しました。これがプラットフォームに依存しないかどうかは考えていませんが、ライブラリをスタックにインストールすると、それらのライブラリはGHCに同梱されます。

関連する問題