我目前正在尝试将png图像文件加载到OCaml中。我试图使用Png.load函数,但当我使用它时,OCaml给出了错误:
未绑定模块Png merlin。
我下载了CamlImages。我在用
我真的很感激任何人能给我的任何帮助或信息。几周来我一直在努力解决这个问题。
发布于 2019-11-27 14:37:18
要在OCaml中使用包,必须执行两个操作:
这是一个一般的指导方针,细节可能会有所不同,因为OCaml是一个成熟的系统,有许多可供选择的选项,有许多包管理器和大量的构建系统。我将从最常见的开始。
安装一个软件包
欧帕姆
如果您使用的是OCaml包管理器(欧帕姆),那么您可以使用opam install <pkgname>安装您的软件包,例如,
opam install camlimages别忘了激活opam
eval $(opam env)当opam在本地安装软件包时,您需要正确地设置环境,以便您的构建系统能够看到它。这就是eval $(opam env)正在做的事情。
带包裹的建筑物
基于ocamlbuild的建筑
OCamlBuild是值得尊敬的,但仍然退出了构建OCaml程序的流行工具。这是非常容易使用,不问太多的问题。不过,对于大型项目来说,它的规模并不大。如果您的应用程序主文件是app.ml,则构建命令非常简单
ocamlbuild -pkg camlimages.all app.native该命令将自动扫描本地依赖项并构建它们,并将应用程序与camlimages包链接。您可以使用-pkgs标志添加更多包,例如,
ocamlbuild -pkgs camlimages.all,core_kernel app.native由于OCamlBuild正在扫描文件夹中的文件,因此应该为每个新文件夹创建一个新文件夹。OCamlBuild不喜欢文件夹中的任何剩余文件或垃圾文件。它甚至可能会抱怨它们,并创建一个脚本来删除它们。
配置Merlin
Merlin是一个自己的构建系统,所以它也需要一些设置。最简单的方法是在项目的顶部文件夹中创建一个.merlin文件,并为要使用的每个包添加一行PKG <pkgname>,例如,
PKG camlimages.all包与库
在OCaml中,包是库的集合。通常,构成包的库的名称可能与包的名称不同。这通常会引起很多混乱。在凸轮的例子中,我们有一个包camlimages,它有很多库,例如,
$ ocamlfind list | grep camlimages
camlimages (version: 4.2.6)
camlimages.all (version: 4.2.6)
camlimages.all_formats (version: 4.2.6)
camlimages.core (version: 5.0.1)
camlimages.exif (version: 5.0.1)
camlimages.freetype (version: 5.0.1)
camlimages.gif (version: 5.0.1)
camlimages.graphics (version: 5.0.1)
camlimages.jpeg (version: 5.0.1)
camlimages.png (version: 5.0.1)
camlimages.tiff (version: 5.0.1)
camlimages.xpm (version: 5.0.1)为了找出这些子库之间的依赖关系,您可以读取描述包的元文件,使用下面的命令可以很容易地找到它
less $(ocamlfind query camlimages)/META我建议使用camlimages.all,但是如果它抱怨,您可以选择适合您的设置的子集。
https://stackoverflow.com/questions/59060382
复制相似问题