Haskell,GHC,win32,cairo

时间:2011-02-01 10:53:13

标签: windows haskell cairo

我在Windows上遇到ghci + cairo的问题。当我尝试加载时,例如像“ghci -package cairo”一样,它失败并出现以下错误:

Loading package random-1.0.0.2 ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package syb-0.1.0.2 ... linking ... done.
Loading package base-3.0.3.2 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
: C:\Users\alexeys\AppData\Roaming\cabal\cairo-0.12.0\ghc-6.12.3\HScairo-0.12.0.o: unknown symbol `_cairo_surface_destroy'
Loading package cairo-0.12.0 ... linking ... : unable to load package `cairo-0.12.0'

即使是最简单的程序也无法在交互模式下工作,例如cairo包附带的“Text.hs”。无论如何使用'ghc --make'编译一切都按预期工作,所以它不是“缺少dll”问题 - 一切都已到位。

我使用'filemon'来查看“ghci”加载的内容,在日志中我可以看到'libcairo-2.dll'(并且此库已经定义了'_cairo_surface_destroy'符号)被成功找到并加载,所以我不知道真的明白 - 它还需要什么?

2 个答案:

答案 0 :(得分:2)

我怀疑你遇到了我刚刚遇到的许多问题。

我最近尝试在Windows上使用Haskell和ZeroMQ做一些事情。 GHC在Windows上运行,而ZeroMQ有一个MingW32端口,并且有一个标准的ZeroMQ Cabal包,所以我认为这样可行。

然而:

  • GHC仅对Windows上的动态链接提供部分支持。见here
  • ZeroMQ Cabal包依赖于libzmq的静态版本。
  • Windows上的GHC对其库和dll使用MingW32约定。
  • ZeroMQ仅在其MingW32端口中构建动态.dll,而不是.a静态存档。

我无法将所有部分组合在一起,因此我的Windows框中没有基于Haskell的ZeroMQ编码。

答案 1 :(得分:0)

请运行ghc-pkg检查以查看它是否一致