首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Erlang的Elixir模块失败

使用Erlang的Elixir模块失败
EN

Stack Overflow用户
提问于 2017-07-09 20:50:16
回答 1查看 429关注 0票数 2

我正试图在Erlang模块中使用从Elixir源代码编译的束文件。当我运行Erlang节点时,它会引发错误,但是我可以直接使用来自Elixir的代码。

灵丹妙药模块:

代码语言:javascript
复制
defmodule Recursion do
  def print_multiple_times(msg, n) when n <= 1 do
    IO.puts msg
  end

  def print_multiple_times(msg, n) do
    IO.puts msg
    print_multiple_times(msg, n - 1)
  end
end

Erlang模块:

代码语言:javascript
复制
-module(use_recur).
-define(elixir__recursion, 'Elixir.Recursion').

-export([hey/0]).

hey() ->
    ?elixir__recursion:print_multiple_times("Hello!", 3).

汇编这两份文件:

$ rm -f *.beam $ elixirc recursion.ex $ erlc use_recur.erl

运行Erlang:

$ erl -run use_recur -run init停止-noshell {"init in do_boot“、{undef、[{'Elixir.IO‘)、"Hello!”、[]}、{'Elixir.Recursion’、print_multiple_times,2、{file、"recursion.ex"}、{line、7}、{init、start_em,1、[]}、{init、do_boot,3、[]}}在do_boot ({undef )中终止。[{Elixir.IO,puts,Hello!,[]},{Elixir.Recursion,print_multiple_times,2,{},{}},{init,start_em,1,[]},{init,do_boot,3,[]}}) 正在将崩溃转储写入: erl_crash.dump...done

灵丹妙药脚本:

代码语言:javascript
复制
Recursion.print_multiple_times "Hello!", 3

成功运行:

代码语言:javascript
复制
$ elixir elx_recur.exs  
Hello!
Hello!
Hello!

为什么会发生这种事?我认为Erlang的产出应该是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 21:37:15

该错误意味着Erlang无法找到名为'Elixir.IO'的模块。这个模块是核心药剂的一部分。您需要使用ebin (或其他类似的标志,如-pz)将您的Elixir安装的-pa文件夹添加到Erlang的加载路径中,以使Elixir的核心库加载,因为该文件夹包含已编译的.beam文件,包括Elixir.IO.beam

代码语言:javascript
复制
erl -pa /path/to/elixir/ebin ...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45000895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档