Эрланг: Как включить библиотеки

Я пишу простую программу на 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 используя этот путь.

Другие вопросы по тегам