【问题标题】:"** exception error: undefined function add:addfunc/0 in Erlang ""** 异常错误:未定义的函数 add:addfunc/0 in Erlang "
【发布时间】:2019-07-05 01:41:50
【问题描述】:

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

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

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

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

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

编辑:

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

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

addfunc() -> 
    5 + 6.

【问题讨论】:

  • 请完整分享您的代码。

标签: erlang erlide


【解决方案1】:

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

更新

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

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题——对于尾递归斐波那契函数——如下:

    -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
    

    它成功了!

    【讨论】:

      【解决方案3】:

      我认为你还没有编译代码,你正在尝试运行程序。

      在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 是一个字节码文件

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

      【讨论】:

        【解决方案4】:

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

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

        如果还是不行,m(add). 会收到什么消息?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-11
          • 2014-10-31
          • 2011-02-15
          • 1970-01-01
          • 2016-05-04
          • 2021-04-03
          • 2015-01-14
          • 1970-01-01
          相关资源
          最近更新 更多