【问题标题】:Linking c++ dll with Haskell-Platform on Windows, outputs 'undefined reference'在 Windows 上将 c++ dll 与 Haskell-Platform 链接,输出“未定义的引用”
【发布时间】:2012-01-23 13:49:18
【问题描述】:

我是一名 Haskell 爱好者,一直坚持在 Windows 上编译我的小 Haskell 程序。我的程序使用了iconv 包,它又使用了用c/c++ 编写的外部库。为了让事情顺利进行,我有:

  • 运行GNU-Iconv setup 并添加其“bin”文件夹,其中 'libiconv-2.dll' 和 'libiconv2.dll' 位于PATH 变量。
  • 提取并复制“LibIconv 开发人员文件”到“mingw”文件夹 Haskell 平台位置。
  • 然后 'cabal install iconv' 编译,我有 cabal 包 已安装。

现在,当我尝试在 Leksah 中构建我的模块时,我从“GHC”收到以下消息:

Building norms-parser-0.0.1...
Linking dist\build\norms-parser\norms-parser.exe ...
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x7): undefined reference to `_imp__libiconv_open'
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x17): undefined reference to `_imp__libiconv'
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x27): undefined reference to `_imp__libiconv_close'
collect2: ld returned 1 exit status

使用“GHCi”,我也面临一个问题:

ghc.exe: unable to load package `iconv-0.4.1.0'
ghc.exe: C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-    7.0.4\HSiconv-0.4.1.0.o: unknown symbol `__imp__libiconv_open'

我认为可能的解决方案是将 c/c++ 头文件正确设置为“mingw”文件夹并将 PATH 变量设置为“lib”文件,但我对此知之甚少,因此将不胜感激.

【问题讨论】:

标签: gcc haskell mingw iconv


【解决方案1】:

在 Windows 上安装 libiconv 有点棘手。

  1. it site here 下载 libiconv 二进制开发者文件
  2. 将两个包解压到 mingw 文件夹中,该文件夹位于 Haskell Platform 文件夹中。
  3. 为 Iconv 下载 cabal 包latest version for the moment
  4. 编辑 iconv.cabal 文件,使带有 include-dirsextra-lib-dirs 的行看起来像

    include-dirs:    cbits, "C:\\HaskellPlatform\\2013.2.0.0\\mingw\\include"
    extra-lib-dirs:  "C:\\HaskellPlatform\\2013.2.0.0\\mingw\\lib"
    

注意 windows 路径中的双破折号,并将其编辑为您的 Haskell 平台路径。

  1. 编辑iconv.cabal文件,有if os(darwin) || os(freebsd)一行,改成if os(darwin) || os(freebsd) || os(windows)
  2. 就是这样,现在您可以从 iconv pachage dir 运行 cabal install 命令

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多