1

我正在尝试执行一个简单的 erlang 程序来添加两个数字。我正在尝试在 Ubuntu 10.04 LTS 上的 Eclipse 中执行此操作。

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

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

我该如何解决这个错误?提前致谢。

该程序在 erlang shell 中执行时运行良好。但是当谈到日食时,它给了我这个错误。不是这个,任何与此相关的程序都会给我类似的错误。猜猜我会遗漏一些关于 Eclipse 配置的信息。

编辑:

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

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

addfunc() -> 
    5 + 6.
4

4 回答 4

1

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

更新

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

于 2014-06-06T07:26:06.717 回答
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

它奏效了!

于 2015-12-23T22:24:55.797 回答
1

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

在eclipse中,使用“运行”图标,触发运行;这将使您进入控制台窗口中的 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.erl 相同的目录中看到一个名为 - add.beam 的新文件

add.beam 是一个字节码文件

现在您应该能够运行程序而不会出现任何错误

于 2019-07-04T17:41:50.347 回答
-1

你如何尝试执行你的代码?

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

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

于 2014-06-07T20:00:08.060 回答