6

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

当我foo安装在 中时~/.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.

当我没有安装它时~/.cabal,我会收到一个标准的“找不到模块”错误。当我没有在我的沙箱中安装它时,我在尝试编译我的主程序代码时遇到相同的模块未找到错误。

插件文档充其量是稀缺的。关于如何解决这个问题的任何想法?

4

1 回答 1

1

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

于 2014-01-27T06:38:01.430 回答