Как вызвать модуль, которого нет в той же папке в Erlang?

#erlang

#эрланг #erlang

Вопрос:

Я изучаю один проект с открытым исходным кодом, домашняя страница находится здесь: https://github.com/kevsmith/gen_nb_server Я обнаружил, что структура проекта является

 src/
  gen_nb_server.erl
priv/
  example
    src/
      example.erl
  

когда я захожу в папку example и запускаю «make», и запускаю модуль example с помощью «example:start_link().», он не может найти модуль gen_nb_server, я хочу знать, как вызвать модуль, который не находится в той же папке? Спасибо!

Ответ №1:

Вы можете использовать -pa (или -pz), чтобы добавить каталоги ebin верхнего уровня и priv/ example / ebin в начало (или конец) вашего пути к коду.

 # erl -pa gen_nb_server/ebin -pa gen_nb_server/priv/example/ebin
[...]
1> example:start_link().
{ok,<0.33.0>}
  

Комментарии:

1. спасибо!, не могли бы вы сказать мне, как вы получаете каталог «gen_nb_server / ebin»? Я всего лишь новичок

2. это означает, где находится каталог-«gen_nb_server/ebin», я не могу его найти

3. это был псевдоним, который он использовал для папки вашего проекта. То, что вы пишете после -pa , является обычным путем, который указывает на каталог, в котором находятся файлы beam.

Ответ №2:

В дополнение к тому, что упоминал butter71.. вы можете загружать код, находясь в самой оболочке…

1> код:add_path("gen_nb_server/ebin").

вы также можете использовать code:add_patha или code:add_pathz для загрузки файлов beam в начале или конце списка путей..