2014-10-30 31 views
2

我在寫一個簡單的Erlang程序,請求一個URL並將響應解析爲JSON。Erlang:如何包含庫

爲此,我需要使用名爲Jiffy的庫。我下載並編譯了它,現在我有一個.beam文件以及一個.app文件。我的問題是:我如何使用它?我如何將這個庫包含在我的程序中?我無法理解爲什麼我無法在網絡上找到一個必須非常關鍵的答案。

Erlang有一個包含語法,但收到一個.hrl文件。

謝謝!

回答

6

您不需要將文件包含在您的項目中。在Erlang中,代碼將在運行時試圖找到任何函數。因此,您使用的模塊必須位於虛擬機的搜索路徑中,該虛擬機在您需要的地方運行您的代碼,就這些了。

爲此,您可以在您啓動Erlang的文件添加到您的路徑:ERL-PA你的/路徑/到/束(它也存在-pz看到erlang doc

注意,也有可能修改從應用程序本身使用代碼的路徑:add_path(Dir)。

你應該看看到OTP的方式來建立Erlang的文檔或Learn You Some Erlang的應用,並且還看螺紋鋼一個工具,可以幫助你管理(例如starting with rebarrebar wiki

1

要添加到二郎應用帕斯卡的回答是,Erlang會在運行時搜索你的文件,你可以添加額外的路徑作爲命令行參數。

但是,當您構建一個包含其他庫的規模項目時,您應該構建一個Erlang應用程序。這通常需要使用rebar

當使用螺紋鋼時,您的應用程序應該有一個deps/目錄。要將jiffy包含在您的項目中,最簡單的方法是將回購克隆到deps/jiffy。這就是你需要在你的項目中完成jiffy:decode(Data)這樣的事情。

此外,您可以通過添加額外的行{erl_opts, [{i, "./Some/path/to/file"}]}.來指定rebar.config文件中的其他包含文件。然後螺紋鋼將使用該路徑尋找file.so

+0

我克隆成deps/jiffy,然後我嘗試訪問jiffy:encode(Data),我的牛仔服務器崩潰了。 – quantumpotato 2017-01-02 03:15:53