“**异常错误:未定义的函数add:在Erlang中添加addfunc / 0”

时间:2014-06-06 05:27:03

标签: erlang erlide

我试图执行添加两个数字的简单erlang程序。 我试图在Eclipse上使用Ubuntu 10.04 LTS。

当我执行此程序时,我收到错误,如下所示:

** exception error: undefined function add:addfunc/0

我如何解决此错误?提前谢谢。

这个程序在erlang shell中执行时工作正常。但是当涉及日食时,它会给我这个错误。不是这个,任何关于这个问题的程序都给了我类似的错误。猜猜我会错过关于日食配置的一些内容。

编辑:

无论如何,这是示例添加程序,

-module(add). 
-export([addfunc/0]).

addfunc() -> 
    5 + 6.

4 个答案:

答案 0 :(得分:1)

此消息告诉您模块add没有导出的函数addfunc/0。 确保您要调用的函数具有该名称,不期望任何名称 参数,是 导出,模块是 编译后,搜索路径包括已编译的梁文件,并且使用code:clash()

没有模块冲突

更新

目前尚不清楚erlide(你似乎使用的eclipse erlang插件)如何编译和运行程序。尝试使用erlc或在erl shell中编译源代码。通过这种方式,您将拥有更容易控制的环境,并且您将更好地了解正在发生的事情。

答案 1 :(得分:1)

我得到了完全相同的问题 - 对于尾部递归的斐波那契函数 - 下面:

-module(math2).
-export([fibonacci/1]).

fibonacci(0) -> 0;
fibonacci(1) -> 1;
fibonacci(M) -> fibonacci(M-1) + fibonacci(M-2).

最后,我意识到这是一个编译时异常。然后,在我的shell上打开了一个新选项卡并尝试使用erlc而不是erl。

$ erlc math2.erl

现在我也可以看到math2.beam文件已创建。 被称为斐波那契10:

4> math2:fibonacci(10).
55

它有效!

答案 2 :(得分:0)

我认为您尚未编译代码,而您正在尝试运行该程序。

在日食中,使用“运行”图标触发运行;这将使您进入控制台窗口中的erl shell。 在那里-

cd("C:\Learning_ERL\src").

您应该会看到类似-

的输出
(Learning-ERL@DALAKSHM-MNFSM)7> cd("C:\Learning_ERL\src").
c:/Learning_ERL/src
ok

然后编译代码-

c(add)

您应该在erl shell上看到类似这样的内容-

(Learning-ERL@DALAKSHM-MNFSM)10> c(add).
{ok,add}

现在您应该在与erl源文件相同的目录中看到一个名为-add.beam的新文件-add.erl

  

add.beam是一个字节码文件

现在,您应该可以正常运行程序了

答案 3 :(得分:-1)

您如何尝试执行代码?

在您的编辑器中,右键单击并选择“运行方式” - >“Erlang应用程序”。启动的VM将自动加载项目,编辑/保存文件时将重新加载。启动时,会出现一个控制台,您可以从那里调用您的代码。

如果它仍然不起作用,您会为m(add).收到什么消息?