私は、いくつかの OS API と通信するために Windows でカスタム .dll と .lib を必要とする Haskell ライブラリ パッケージに取り組んできました。.lib はextra-libraries
フィールドでライブラリにリンクされ、DLL は で cabal パッケージ ディレクトリにインストールされますdata-files
。
何らかの理由で (私は決してリンクの専門家ではありませんが、これは奇妙に思えます) 私のパッケージを (build-depends
フィールドで) 使用するテスト実行可能ファイルを作成すると、コンパイルに使用したのと同じ .lib にリンクする必要があります。ライブラリ - ライブラリ関数を呼び出すだけですが、.lib が公開するものは何もありません。明らかに、実行時に .dll にアクセスする必要がありますが、それは予想されることです。.lib も必要とするのは奇妙に思えます。
.lib は、インストール時に Cabal/GHC によってライブラリ用に生成された .a ファイルに既にリンクされているはずです。そうではありませんか?もしそうなら、誰かがその理由を説明できますか?