我在 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”符号)被成功找到并加载,所以我不真的不明白 - 它还想要什么?
最佳答案
我怀疑您遇到了我刚刚遇到的许多问题。
我最近尝试在 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 编码。
关于windows - haskell ,GHC,win32,开罗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861647/