Эрланг: Как включить библиотеки
Я пишу простую программу на Erlang, которая запрашивает URL и анализирует ответ как JSON.
Для этого мне нужно использовать библиотеку под названием Jiffy. Я скачал и скомпилировал его, и теперь у меня есть файл.beam вместе с файлом.app. Мой вопрос: как мне это использовать? Как мне включить эту библиотеку в мою программу? Я не могу понять, почему я не могу найти в Интернете ответ на вопрос, который должен быть очень важным.
Erlang имеет синтаксис включения, но получает файл.hrl.
Спасибо!
2 ответа
Вам не нужно включать файл в ваш проект. В Erlang код во время выполнения пытается найти любую функцию. Таким образом, используемый вами модуль должен находиться в пути поиска виртуальной машины, которая запускает ваш код в тот момент, когда вам это нужно, вот и все.
Для этого вы можете добавить файлы к своему пути при запуске erlang: erl -pa your/path/to/beam (он также существует -pz, см. Erlang doc)
Обратите внимание, что также можно изменить путь из самого приложения, используя код:add_path(Dir).
Вы должны взглянуть на OTP способ создания приложений в документации Erlang или Learn You Some Erlang, а также взглянуть на Rebar - инструмент, который помогает вам управлять приложением Erlang (например, начиная с Rebar или Wiki арматуры)
Чтобы добавить к ответу Паскаля, да Erlang будет искать ваши файлы во время выполнения, и вы можете добавить дополнительные пути в качестве аргументов командной строки.
Однако, когда вы создаете проект такого масштаба, в который вы включаете другие библиотеки, вы должны создавать приложение Erlang. Это обычно влечет за собой использование арматуры.
При использовании арматуры ваше приложение должно иметь deps/
каталог. Чтобы включить Jiffy в свой проект, проще всего просто клонировать репо в deps/jiffy
, Это все, что нужно сделать, чтобы вы сделали что-то вроде jiffy:decode(Data)
в вашем проекте.
Кроме того, вы можете указать дополнительные включаемые файлы в вашем rebar.config
файл, добавив дополнительные строки {erl_opts, [{i, "./Some/path/to/file"}]}.
, арматура будет искать file.so
используя этот путь.