我能够无错误地安装text-icu
。 (我使用--extra-lib-dirs
和--extra-include-dirs
指向icu4c二进制分发中的lib
和include
目录。)
我还可以通过text-icu
构建以下使用ghc --make icu.hs
的简单程序:
-- icu.hs
import Data.Text.ICU
main = print $ Locale "tr-TR"
在这两个步骤中都没有错误或警告。但是当我尝试运行已编译的程序icu.exe
时,我根本没有输出。我希望得到Locale "tr-TR"
的一行,但我什么都没得到 - 甚至没有错误或警告。如果我尝试
main = do
print $ Locale "tr-TR"
print "Done"
所以使用text-icu
的东西似乎会导致程序无声地失败。 echo $?
会产生False
。
是否有人在Windows上启动并运行text-icu
?你能告诉我我做错了什么吗?
答案 0 :(得分:9)
Stack在Windows上包含msys2的副本,其中包含pacman
包管理器,因此我们可以运行:
stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu
stack build text-icu
答案 1 :(得分:5)
我通过这样做来管理它:
icu/bin
的内容解压缩到我C:\bin
上的%PATH%
目录中。将icu
的内容解压缩到目录C:\bin\icu
。stack ghci text-icu --extra-lib-dirs=c:\bin --extra-include-dirs=c:\bin\icu\include
。import Data.Text.ICU.Normalize
,然后:set -XOverloadedStrings
,然后normalize None "test"
。icuuc.dll
,取C:\bin\icuuc56.dll
并在C:\bin\icuuc.dll
制作副本。对我来说,有三个相关的dll。毕竟,我可以在ghci
中规范化字符串。
答案 2 :(得分:1)
这就是Windows对缺少的静态依赖性做出反应的方式。当操作系统启动进程时,它会查找静态依赖项。如果缺少一个,则程序不会启动。
使用depends.exe查找缺少的导入。这可能是一个丢失的dll,也可能是错误的版本。
取决于是否可用 1. Visual Studio 2. Microsoft Platform SDK 3.其他微软软件包 4. http://www.dependencywalker.com
在追踪这种情况下发生的事情时,这是非常必不可少的。
答案 3 :(得分:0)
你应该检查是否有一些DLL缺少cygcheck.check路径和windows环境变量也是正确的。或者尝试按照haskell程序重新安装。
http://www.haskell.org/haskellwiki/Windows#Tools_for_compilation
祝你好运