私は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++をプロジェクトでコンパイルすることができないということは意味がないので、私はそれをプラットフォームに結びつけているからです。私はこれをハッキングにすることができるようにしたい。
紛失しているものがありますか?そうでなければ、それはバグですか、それを修正する計画はありますか?
正確なエラーメッセージと[mcve]を追加してください。 – Zeta
ここにC++ソースが含まれているキャバルパッケージの例があります。https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zetaこれはそのタイプの質問ではありません。 –