Haskell插件和cabal沙盒

6
因此,我正在尝试使用Plugins包从源文件动态加载Haskell函数。源文件依赖于一个名为“foo”的包,其中包含模块“Foo.Bar”。 我在Cabal沙箱中运行我的项目,我已经安装了“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中安装它时,会出现标准的“模块未找到”错误。当我没有在我的沙盒中安装它时,尝试编译我的主程序代码时,也会出现相同的模块未找到错误。
插件文档非常匮乏。您有什么解决方法吗?

4
请给出一个最简且可编译的示例,这会很有帮助。 - Thomas M. DuBuisson
2
我明天会做这个。它目前在一个相当大的Yesod项目中,我需要提取最小的部分。 - jmite
我在构思一个最小的示例时遇到了麻烦。你有什么想法吗? - jmite
1个回答

1

我通过使用System.Plugins.Make来实际进行编译,而不是依赖于预先存在的对象文件,使其工作。这并不是一个完整的解决方案,也没有解释问题,但它现在对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接