Я хочу интегрировать клиент erlang aerospike в среду erlang в качестве глобального модуля в Fedora 21. Я делаю клиент nif и модуль, но мне всегда приходится копировать файлы в каждом проекте. Теперь я хочу использовать модуль aerospike, такой как модули erlang или os. Как я могу это сделать?
Интегрировать клиент aerospike в среду erlang как глобальный модуль
Ответы (1)
У меня была такая же проблема, когда я экспериментировал с креплением Aerospike. Проблема в том, что предполагается, что файл .so
находится в текущем рабочем каталоге. Я внес небольшое изменение в aerospike.erl
, чтобы он располагался правильно, независимо от пути.
Заменять
ok = erlang:load_nif("./aerospike_nif", 0).
in init()
с
EbinDir = filename:dirname(code:which(?MODULE)),
SoFile = filename:join(EbinDir,"aerospike_nif"),
erlang:load_nif(SoFile, 0).
При запуске erl
добавить путь к каталогу, содержащему файлы луча Aerospike и .so
: erl -pa path_to_aerospike/erlang/
person
johlo
schedule
07.05.2015
Я могу работать с этим, спасибо. что означает эта фраза?
code:which(?MODULE)
- person jasmad; 11.05.2015
?MODULE
— это макрос, который оценивается как имя текущего модуля, в данном случае aerospike
. code:which/1
возвращает абсолютный путь к файлу, содержащему определение модуля.
- person johlo; 11.05.2015