Haskell插件和cabal沙箱

Haskell插件和cabal沙箱,haskell,ghc,dynamic-linking,cabal,cabal-dev,Haskell,Ghc,Dynamic Linking,Cabal,Cabal Dev,因此,我尝试使用Plugins包从源文件动态加载haskell函数。源文件依赖于带有模块foo.Bar的包foo。我在一个阴谋集团的沙箱中运行我的项目,在那里我安装了foo。我的主程序和加载插件的模块都依赖于foo。我总是会遇到以下两个错误之一: 当我在~/.cabal中安装了foo时,我得到错误: GHCi runtime linker: fatal error: I found a duplicate definition for symbol aizmvszmaizmlibzm0zi1

因此,我尝试使用Plugins包从源文件动态加载haskell函数。源文件依赖于带有模块
foo.Bar
的包
foo
。我在一个阴谋集团的沙箱中运行我的项目,在那里我安装了
foo
。我的主程序和加载插件的模块都依赖于
foo
。我总是会遇到以下两个错误之一:

当我在
~/.cabal
中安装了
foo
时,我得到错误:

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.
当我没有在
~/.cabal
中安装它时,我会得到一个标准的“未找到模块”错误。当我没有在沙箱中安装它时,我会在编译主程序代码时遇到相同的模块未找到错误


插件文档充其量也很稀少。关于如何解决这个问题有什么想法吗?

我是通过使用System.Plugins.Make来实际执行compliation的,而不是依赖于预先存在的对象文件。这不是一个完整的解决方案,无法解释问题,但目前它对我有效。

如果您给出一个最低限度的编译示例,将非常有用。我明天会这样做。它目前在一个相当大的yesod项目中,我需要提取最小的部分。我很难想出一个最小的例子。有什么想法吗?