如何在Windows系统上使用text-icu?

40

我能够无误安装text-icu。(我使用了--extra-lib-dirs--extra-include-dirs指向二进制发行版中的libinclude目录。)

同时,我还通过ghc --make icu.hs编译了一个简单的使用text-icu的程序。

-- 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的人? 你能告诉我我做错了什么吗?


你可以尝试在main函数中作为第一个表达式使用print "Start",以查看它是在加载时失败还是在调用Locale "tr-TR"时失败。我甚至无法编译您的程序:软件包安装正常,但在编译时存在未解决的引用。-optl-L和-optl-l都没有帮助。 - ja.
当我在开头添加 print "start" 时,我得到相同的行为 -- 没有任何输出。 - John MacFarlane
libHStext-icu-0.6.3.5.a(text_icu.o):text_icu.c:(.text+0x139):对 `ucnv_getMaxCharSize_51' 的引用未定义。 - ja.
4个回答

11

Stack在Windows上包含msys2的副本,其中包含pacman软件包管理器,因此我们可以运行以下命令:

stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu
stack build text-icu

5
我通过以下步骤实现了它: 在完成所有这些步骤之后,我可以在ghci中规范化字符串。

1
这是Windows对于缺失静态依赖项的反应。当操作系统启动一个进程时,会查找静态依赖项。如果有一个缺失,则程序不会启动。
使用depends.exe查找缺失的导入项。可能是缺少的dll或错误版本的dll。
Depends可通过以下方式获得: 1. Visual Studio 2. Microsoft平台SDK 3. 其他Microsoft软件包 4. http://www.dependencywalker.com 在追踪此类情况时,它非常重要。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接