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 仅在其 MingW32 端口中构建动态.dll,而不是.a静态存档。

我无法将所有部分组合在一起,因此我的 windows 盒子上没有基于 Haskell 的 ZeroMQ 编码。

于 2012-09-28T17:08:54.567 回答
0

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

于 2011-02-04T13:30:22.890 回答