我目前正在尝试将png图片文件加载到中OCaml。我正在尝试使用该Png.load函数,但是当我使用它时OCaml出现错误:
未绑定的模块Png merlin。
我已经CamlImages下载了。我在用
camlimages版本5.0.1 ,我正在
macOS Catalina版本10.15.1。
我非常感谢任何人提供的帮助或任何信息。数周以来,我一直在努力解决此问题。
要在OCaml中使用软件包,您必须执行两个操作:
这是一个一般性准则,因为OCaml是一个成熟的系统,具有许多选项可供选择,因此有许多软件包管理器和许多构建系统,因此细节可能有所不同。我将从最普通的开始。
如果您使用的是OCaml软件包管理器(opam),则可以使用来安装软件包opam install <pkgname>,例如,
opam install camlimages
Run Code Online (Sandbox Code Playgroud)
不要忘记激活opam,
eval $(opam env)
Run Code Online (Sandbox Code Playgroud)
当opam在本地安装软件包时,您需要正确设置环境,以便构建系统可以看到它。这是eval $(opam env)在做什么。
ocamlbuildOCamlBuild是古老的,但仍然退出了用于构建OCaml程序的流行工具。它非常易于使用,不会问太多问题。但是,它不适用于大型项目。如果您的应用程序主文件为app.ml,则build命令非常简单
ocamlbuild -pkg camlimages.all app.native
Run Code Online (Sandbox Code Playgroud)
该命令将自动扫描本地依赖关系并将其生成,并将您的应用程序与camlimages软件包链接。您可以使用-pkgs标志添加更多软件包,例如,
ocamlbuild -pkgs camlimages.all,core_kernel app.native
Run Code Online (Sandbox Code Playgroud)
由于OCamlBuild正在扫描您的文件夹中的文件,因此您应该为每个新文件夹创建一个新的新文件夹。OCamlBuild不喜欢您文件夹中的任何剩余或垃圾文件。它甚至可能抱怨它们并创建一个脚本来删除它们。
Merlin是自己的构建系统,因此也需要一些设置。最简单的方法是.merlin在项目的顶部文件夹中创建一个文件,然后为要使用的每个包添加一行PKG <pkgname>,例如,
PKG camlimages.all
Run Code Online (Sandbox Code Playgroud)
在OCaml中,程序包是库的集合。通常,构成软件包的库的名称可能与软件包的名称不同。这通常会引起很多混乱。对于camlimages,我们有一个包含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)
Run Code Online (Sandbox Code Playgroud)
要弄清楚这些子库之间的依赖关系,您可以阅读描述软件包的META文件,该文件可读性强,可以通过以下命令轻松找到
less $(ocamlfind query camlimages)/META
Run Code Online (Sandbox Code Playgroud)
我建议您使用,camlimages.all但是如果它抱怨您可以选择适合您的设置的子集。
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |