Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Haskell,GHC,win32,开罗_Windows_Haskell_Cairo - Fatal编程技术网

Windows Haskell,GHC,win32,开罗

Windows Haskell,GHC,win32,开罗,windows,haskell,cairo,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 ...

我对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' 加载包随机-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:未知符号“\u cairo\u surface\u destroy” 正在加载cairo-0.12.0包。。。链接…:无法加载包“cairo-0.12.0” 即使是最简单的程序也不能在交互模式下工作,比如cairo包附带的“Text.hs”。不过,使用“ghc--make”编译后,所有内容都按预期工作,因此这不是“缺少dll”的问题—所有内容都已就绪


我使用“filemon”查看“ghci”加载的内容,在日志中我可以看到“libcairo-2.dll”(该库定义了“\u cairo\u surface\u destroy”符号)已成功找到并加载,所以我真的不明白-它还想要什么?

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

我怀疑您遇到了我刚才遇到的许多问题

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

然而:

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

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

也许这是一个“线程”问题?最近有一个关于SOE图形库的Haskell cafe帖子显示了类似的行为“Haskell表达式学院的代码”。很抱歉,我不知道解决方案。libcairo-2.dll是否位于路径名中有空格的位置?另外,您是否可以发布您正在使用的ghci版本(这在任何情况下看起来都像是链接器错误)?可能是
stdcall
/
ccall
不匹配。DLL中的符号名是否有类似于
@4
的后缀?我使用的是Haskell平台2010.2.0.0附带的ghc 6.12.3libcairo-2.dll'位于C:\GTK\bin中,没有空格或任何内容。此外,我还使用“filemon”查看了ghci的功能,从中可以看出,它在加载过程中加载了此库,因此可能没有库位置问题。对于库,此符号的nm给出:“68df9f58 T_cairo_surface_destroy”。我看不出有什么不对,符号被定义了。图书馆是从