Erlang:如何包含库
我在写一个简单的Erlang程序,请求一个URL并将响应解析为JSON。Erlang:如何包含库
为此,我需要使用名为Jiffy的库。我下载并编译了它,现在我有一个.beam文件以及一个.app文件。我的问题是:我如何使用它?我如何将这个库包含在我的程序中?我无法理解为什么我无法在网络上找到一个必须非常关键的答案。
Erlang有一个包含语法,但收到一个.hrl文件。
谢谢!
您不需要将文件包含在您的项目中。在Erlang中,代码将在运行时试图找到任何函数。因此,您使用的模块必须位于虚拟机的搜索路径中,该虚拟机在您需要的地方运行您的代码,就这些了。
为此,您可以在您启动Erlang的文件添加到您的路径:ERL-PA你的/路径/到/束(它也存在-pz看到erlang doc)
注意,也有可能修改从应用程序本身使用代码的路径:add_path(Dir)。
你应该看看到OTP的方式来建立Erlang的文档或Learn You Some Erlang的应用,并且还看螺纹钢一个工具,可以帮助你管理(例如starting with rebar或rebar wiki)
要添加到二郎应用帕斯卡的回答是,Erlang会在运行时搜索你的文件,你可以添加额外的路径作为命令行参数。
但是,当您构建一个包含其他库的规模项目时,您应该构建一个Erlang应用程序。这通常需要使用rebar。
当使用螺纹钢时,您的应用程序应该有一个deps/
目录。要将jiffy包含在您的项目中,最简单的方法是将回购克隆到deps/jiffy
。这就是你需要在你的项目中完成jiffy:decode(Data)
这样的事情。
此外,您可以通过添加额外的行{erl_opts, [{i, "./Some/path/to/file"}]}.
来指定rebar.config
文件中的其他包含文件。然后螺纹钢将使用该路径寻找file.so
。
我克隆成deps/jiffy,然后我尝试访问jiffy:encode(Data),我的牛仔服务器崩溃了。 – quantumpotato 2017-01-02 03:15:53