“** exception error: undefined function add:addfunc/0 in Erlang ”

强颜欢笑 提交于 2019-12-11 13:36:43

问题


I'm trying to execute a simple erlang program of adding two numbers. I'm trying to do this in Eclipse on Ubuntu 10.04 LTS.

When i execute this program, I'm getting the error as shown below:

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

How do i go about solving this error? Thanks in advance.

This program when executed in the erlang shell is working fine. But when it comes to eclipse it's giving me this error. Not this, any program for that matter is giving me the similar error. Guess I would be missing something about the eclipse configuration.

EDIT:

Anyways, This is the sample add program,

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

addfunc() -> 
    5 + 6.

回答1:


This message tells you that module add doesn't have an exported function addfunc/0. Ensure the function you want to be called has exactly that name, doesn't expect any parameters, is exported, the module is compiled, the search path includes the compiled beam file and that there is no module clashes using code:clash()

Update

It's not clear how erlide (eclipse erlang plug-in you seem to use) compiles and runs a program. Try to compile source using erlc or inside erl shell. That way you'll have much easier controllable environment and you'll better understand what's going on.




回答2:


I got exactly the same problem -for a tail recursive fibonacci function- below:

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

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

In the end, had realized that this is a compile-time exception. Then, have opened a new tab on my shell and tried with erlc, instead of erl.

$ erlc math2.erl

Now I am also able to see math2.beam file created. Called fibonacci with 10:

4> math2:fibonacci(10).
55

and it worked!




回答3:


I think you have not compiled the code and you are trying to run the program.

In eclipse, using the "Run" icon, trigger the run; which will get you to the erl shell in the console window. There you do -

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

And you should see output like-

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

Then compile the code -

c(add)

you should see something like this on the erl shell-

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

Now you should be seeing a new file called - add.beam in the same directory as that of your erl source file - add.erl

add.beam is a bytecode file

Now you should be able to run the program without any error




回答4:


How do you try to execute your code?

In your editor, right-click and choose "Run as"->"Erlang application". The VM that is launched will have your project loaded automatically and when editing/saving a file it will get reloaded. When launching, a console appears and you can call your code from there.

If it still doesn't work, what message do you get for m(add).?



来源:https://stackoverflow.com/questions/24074777/exception-error-undefined-function-addaddfunc-0-in-erlang

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!