10

Windows で ghci+cairo に問題があります。たとえば、この「ghci -package cairo」のようにロードしようとすると、次のエラーで失敗します。

パッケージ random-1.0.0.2 を読み込み中 ... リンク中 ... 完了。
パッケージ haskell98 を読み込み中 ... リンク中 ... 完了。
パッケージ syb-0.1.0.2 を読み込み中 ... リンク中 ... 完了。
パッケージ base-3.0.3.2 を読み込んでいます ... リンクしています ... 完了しました。
パッケージ mtl-1.1.0.2 を読み込み中 ... リンク中 ... 完了。
: C:\Users\alexeys\AppData\Roaming\cabal\cairo-0.12.0\ghc-6.12.3\HScairo-0.12.0.o: 不明なシンボル `_cairo_surface_destroy'
パッケージ cairo-0.12.0 を読み込んでいます ... リンクしています ... : パッケージ「cairo-0.12.0」を読み込めません

最も単純なプログラムでさえ、インタラクティブ モードでは機能しません。たとえば、cairo パッケージに付属する 'Text.hs' などです。ただし、「ghc --make」でコンパイルすると、すべてが期待どおりに機能するため、「dll が見つからない」という問題ではなく、すべてが整っています。

「filemon」を使用して「ghci」がロードするものを調べたところ、ログに「libcairo-2.dll」(このライブラリには「_cairo_surface_destroy」シンボルが定義されています)が見つかり、正常にロードされていることがわかります。 -これ以上何を望んでいますか?

4

2 に答える 2

2

私が行った問題の多くにあなたが遭遇しているのではないかと思います。

最近、WindowsでHaskellとZeroMQを使用して何かをしようとしました。GHC は Windows で動作し、ZeroMQ には MingW32 ポートがあり、標準の ZeroMQ Cabal パッケージがあるので、これで動くと思いました。

でも:

  • GHC は、Windows での動的リンクを部分的にしかサポートしていません。ここを参照してください。
  • ZeroMQ Cabal パッケージは の静的バージョンに依存しますlibzmq
  • Windows 上の GHC は、そのライブラリと dll に MingW32 規則を使用します。
  • ZeroMQ は、静的アーカイブ.dllではなく、MingW32 ポートで動的のみを構築します。.a

すべての部品を組み合わせることができなかったため、Windows ボックスに Haskell ベースの ZeroMQ コーディングはありませんでした。

于 2012-09-28T17:08:54.567 に答える
0

ghc-pkg check を実行して、一貫性があるかどうかを確認してください

于 2011-02-04T13:30:22.890 に答える