2014-01-21 8 views
6

したがって、プラグインパッケージを使用して、ソースファイルからhaskell関数を動的にロードしようとしています。ソースファイルは、パッケージfooとモジュールFoo.Barによって異なります。私はfooがインストールされているCabalサンドボックスでプロジェクトを実行しています。私のメインプログラムと、プラグインをロードしているモジュールの両方は、fooに依存しています。私はいつも次の二つのいずれかのエラーを取得:私は~/.cabalfooをインストールしている場合はHaskellのプラグインとCabalサンドボックス

を、私はエラーを取得する:私はそれが~/.cabalにインストールされていない場合は

GHCi runtime linker: fatal error: I found a duplicate definition for symbol 
    aizmvszmaizmlibzm0zi1_FooziBar_zdfTypeableBazzuds2_closure 
whilst processing object file 
    /home/joey/.cabal/lib/foo-0.1/ghc-7.6.3/HSfoo-0.1.o 
This could be caused by: 
    * Loading two different object files which export the same symbol 
    * Specifying the same object file twice on the GHCi command line 
    * An incorrect `package.conf' entry, causing some object to be 
    loaded twice. 
GHCi cannot safely continue in this situation. Exiting now. Sorry. 

は、私が「標準を取得しますモジュールが見つかりません "エラー。私のサンドボックスにインストールされていないときは、メインプログラムのコードをコンパイルしようとしたときに、同じモジュールにエラーが見つかりません。

プラグインのドキュメントは、まれにしかありません。どのようにこれを解決するための任意の考えですか?

+4

最小限のコンパイルを行った場合に役立ちます。 –

+2

明日これをやるよ。それは現在かなり大きなイエロープロジェクトの中にあります。私は最小限の部分を抽出する必要があります。 – jmite

+0

私は、最小限の例を考え出すのに問題があります。何か案は? – jmite

答えて

1

System.Plugins.Makeを使用して、既存のオブジェクトファイルに頼るのではなく、実際にコンプリートを実行することで、この作業が可能になりました。完全な解決策ではなく、問題を説明するものではありませんが、今のところ私にとってはうまくいきます。

関連する問題