我试图执行添加两个数字的简单erlang程序。 我试图在Eclipse上使用Ubuntu 10.04 LTS。
当我执行此程序时,我收到错误,如下所示:
** exception error: undefined function add:addfunc/0
我如何解决此错误?提前谢谢。
这个程序在erlang shell中执行时工作正常。但是当涉及日食时,它会给我这个错误。不是这个,任何关于这个问题的程序都给了我类似的错误。猜猜我会错过关于日食配置的一些内容。
编辑:
无论如何,这是示例添加程序,
-module(add).
-export([addfunc/0]).
addfunc() ->
5 + 6.
答案 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).
收到什么消息?