我正在编写一个简单的Erlang程序,该程序请求URL并将响应解析为JSON。
要做到这一点,我需要使用一个名为Jiffy的库。我下载并编译了它,现在我有一个.beam文件和一个.app文件。我的问题是:我该如何使用它?如何在我的程序中包含此库?我无法理解为什么我无法在网上找到一个必须非常重要的答案。
Erlang有一个include语法,但收到一个.hrl文件。
谢谢!
答案 0 :(得分:6)
您无需在项目中包含该文件。在Erlang中,代码将在运行时尝试查找任何函数。因此,您使用的模块必须位于VM的搜索路径中,该路径在您需要的位置运行代码,这就是全部。
为此,您可以在启动erlang时将文件添加到路径中:erl -pa your / path / to / beam(它也存在-pz参见erlang doc)
请注意,也可以使用以下代码修改应用程序本身的路径:add_path(Dir)。
您应该看看OTP方式在erlang文档或Learn You Some Erlang中构建应用程序,还可以看看Rebar是一个帮助您管理erlang应用程序的工具(例如starting with rebar或{{ 3}})
答案 1 :(得分:1)
要添加Pascal的答案,是的Erlang将在运行时搜索您的文件,您可以添加额外的路径作为命令行参数。
但是,当您构建包含其他库的比例项目时,您应该构建一个Erlang应用程序。这通常需要使用rebar。
使用rebar时,您的应用应该有一个deps/
目录。要在项目中包含jiffy,最简单的方法就是将repo克隆到deps/jiffy
中。这就是您需要在项目中执行jiffy:decode(Data)
之类的操作。
此外,您可以通过添加额外的行rebar.config
在{erl_opts, [{i, "./Some/path/to/file"}]}.
文件中指定其他包含文件。然后,钢筋将使用该路径寻找file.so
。