【问题标题】:Building a Haskell program depending on iconv under windowswindows下根据iconv搭建Haskell程序
【发布时间】:2013-09-22 06:10:07
【问题描述】:

我有一个依赖于 iconv 的项目,因为我需要使用 cp1251 代码页。 Here is 问题项目的最小实现。我已经从here 安装了iconv,并且像这样成功安装了haskell 包“iconv”

cabal install iconv --extra-include-dirs="C:\GnuWin32\include" --extra-lib-dirs="C:\GnuWin32\lib"

软件包 iconv 已正确安装,但依赖它的项目链接失败,这是发生了什么。

c:\iconvsmpl>cabal configure --extra-include-dirs="C:\GnuWin32\include" --extra-
lib-dirs="C:\GnuWin32\lib"
Warning: The package list for 'hackage.haskell.org' is 16 days old.
Run 'cabal update' to get the latest list of available packages.
Resolving dependencies...
Configuring iconvsmpl-0.1.0.0...
Warning: The 'license-file' field refers to the file 'LICENSE' which does not
exist.

c:\iconvsmpl>cabal build
Building iconvsmpl-0.1.0.0...
Preprocessing executable 'iconvsmpl' for iconvsmpl-0.1.0.0...
[1 of 1] Compiling Main             ( iconvsmpl.hs, dist\build\iconvsmpl\iconvsm
pl-tmp\Main.o )
Linking dist\build\iconvsmpl\iconvsmpl.exe ...
C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1.
a(hsiconv.o):hsiconv.c:(.text+0x7): undefined reference to `_imp__libiconv_open'

C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1.
a(hsiconv.o):hsiconv.c:(.text+0x17): undefined reference to `_imp__libiconv'
C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1.
a(hsiconv.o):hsiconv.c:(.text+0x27): undefined reference to `_imp__libiconv_clos
e'
collect2: ld returned 1 exit status

c:\iconvsmpl>

为什么安装并链接了iconv,但无法链接iconvsmpl。如何在 Windows 下构建它?是否有另一种方法可以在 Windows 下为 Haskell 使用外部编码?

非常希望有 Windows 的可执行文件。在 Linux 下构建和运行包。

Haskell-Platform 的版本是 2013.2.0.0

【问题讨论】:

标签: windows haskell linker libraries building


【解决方案1】:

在 Windows 上安装时,您需要修改 iconv 软件包的 .cabal 文件。删除条件检查,以便始终应用 extra-libraries 字段。将include-dirsextra-lib-dirs 字段更新为如下所示:

include-dirs:    cbits, "c:\\GnuWin32\\include"
extra-lib-dirs:  "c:\\GnuWin32\\lib"

【讨论】:

  • 这很有帮助,大概是因为'\\'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 2012-12-03
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多