6

DLL を必要としないように (Haskell) プログラムをコンパイルするにはどうすればよいですか?

GLUT を使用し、glut32.dll を必要とするプログラムを作成しました。でコンパイルしましたghc --make program.hs。今、私は自分のプログラムを配布したいと思っていますが、DLL を必要としないようにしたいです (そのため、ユーザーに .exe を渡すだけで済みます)。でコンパイルしようとしましたghc -static --make program.hsが、うまくいきませんでした。「ユーザー エラー (不明な GLUT エントリ glutInit)」が引き続き発生します。

これどうやってするの?

4

2 に答える 2

3

これは、GLUT がライブラリの静的バージョンを提供する場合にのみ可能です (これは次glut32s.libのような名前にすることができますが、特に何かを呼び出す必要はありません)。

このアプローチの成功は、GHC が外部の静的ライブラリとのリンクを許可するかどうかにも依存します。のマニュアル ページは、Haskell ライブラリにのみ適用され、他の外部ライブラリには適用されないことをghc示しています。-static

于 2010-12-05T20:49:48.117 に答える
2

必要な C ライブラリの静的バージョンがあると仮定すると、静的な Haskell 実行可能ファイルを次のように作成できます。

 ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C

これにより、Haskell コンポーネントと C コンポーネントの両方が C ツールチェーンを介して静的にリンクされます。

于 2011-05-12T03:07:27.737 に答える