2012-01-23 8 views
5

私はHaskellの愛好家で、Windows上で私の小さなHaskellプログラムをコンパイルしてしまいました。私のプログラムはiconvパッケージを使用します。パッケージはc/C++で書かれた外部ライブラリを使用します。WindowsでHaskell-PlatformとC++ dllをリンクすると、 'undefined reference'が出力されます。

  • 実行GNU-Iconvセットアップをして 「libiconv2.dll」と「libiconv2.dll」がPATH 変数に、位置しているその「ビン」フォルダを、追加しました:作るために、物事は、私が持っている仕事します。
  • 'LibIconv開発者ファイル'を 'mingw'フォルダ Haskell Platformの場所に抽出してコピーしました。
  • 「cabal install iconv」がコンパイルされ、cabalパッケージ がインストールされています。

さて、私はLeksahに私のモジュールをビルドしようとすると、私は 'GHC' から次のメッセージを取得: 'GHCiの' で

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 

を、私はあまりにも問題に直面します。

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' 

私は考えられる解決策は、 'mingw'フォルダへのc/C++ヘッダファイルの適切な設定と 'lib'ファイルへのPATH変数の設定にあると思いますが、私はそれについてほとんど知識がないので、 。

+0

これは古い問題ですlibiconv。たぶん、このスレッドは助けになるでしょう:http://www.mail-archive.com/[email protected]/msg00858.html –

+0

UPDATE。お返事をありがとうございます。より深く潜って答えを見つけよう: http://www.haskell.org/pipermail/haskell-cafe/2011-February/089234.htmlとここに http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@アイボリー - 答えを見つけたら、投稿して受け入れるべきです。 – sclv

答えて

1

libiconvのインストールは、Windowsではややこしいことです。

  1. あなたはHaskell Platformフォルダ内にあるmingwのフォルダ、オーバー両方のパッケージを解凍しit site here
  2. からバイナリ開発ファイルlibiconvをダウンロード。
  3. Iconvに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 Platformのパス。

  1. 編集iconv.cabalファイルが、それは、今あなたがiconvのpachage DIRからcabal installコマンドを実行することができますif os(darwin) || os(freebsd) || os(windows)
  2. ザッツに変更し、if os(darwin) || os(freebsd)とラインがあり
関連する問題