我在寫一個簡單的Erlang程序,請求一個URL並將響應解析爲JSON。Erlang:如何包含庫
爲此,我需要使用名爲Jiffy的庫。我下載並編譯了它,現在我有一個.beam文件以及一個.app文件。我的問題是:我如何使用它?我如何將這個庫包含在我的程序中?我無法理解爲什麼我無法在網絡上找到一個必須非常關鍵的答案。
Erlang有一個包含語法,但收到一個.hrl文件。
謝謝!
我在寫一個簡單的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