gpt4 book ai didi

module - 在 OCaml 中,两个第三方库公开了相同的模块名称。链接失败

转载 作者:行者123 更新时间:2023-12-01 00:34:05 26 4
gpt4 key购买 nike

我的项目正在使用 ctypes 库和标记库。编译时,它给出以下提示:

Error: Files /Users/Young/.opam/4.02.1/lib/markup/markup.cmxa
and /Users/Young/.opam/4.02.1/lib/ctypes/ctypes.cmxa
both define a module named Common

显然,两个库都公开了相同的模块名称。如何解决?任何帮助将不胜感激。谢谢。

更新:
我也不太明白为什么会有这样的冲突。据我了解,即使两个库都公开了相同的模块 Common,它们也会显示为 Ctypes.Common 与 Markup.Common。应该没有冲突吧?

最佳答案

一般情况下,不修改上游是无法解决的,因此如果出现此类错误,则需要请库维护人员重命名相应的模块。

在您的情况下,使用更新版本的 ctypes 库应该会有所帮助,因为在我的机器上,ctypes(版本 0.11.2)库不再定义 Common模块。

Update: Also I don't quite understand why there'll be such a conflict. To my understanding, even if both libraries expose the same module Common, they will appear as Ctypes.Common vs Markup.Common. There's should be no conflict?



你的理解或多或少是正确的。但是细节很少,库是编译单元的集合,每个编译单元都是模块的集合。编译单元基本上映射到文件,例如,如果你有文件 common.ml ,则编译单元将具有 common姓名。库和编译单元位于平面命名空间中,模块通常位于分层命名空间中。这意味着,构建库的文件名必须具有不同的名称,这就是为什么如果您查看最新的代码库,您会注意到所有文件名都以 ctypes_ 为前缀。 .有一个部分解决方案,为了缓解这个命名空间问题,可以使用打包模块,在这种情况下只有一个模块(通常与库同名)。

关于module - 在 OCaml 中,两个第三方库公开了相同的模块名称。链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com