1

我在同一个 src 文件夹中的两个模块。mod1 声明了我希望在模块 mod2 中使用的函数:

-module(mod1).
-export([myfunc/1]).

myfunc(A) -> {ok}.

在其他模块中,我不导入 mod1:

-module(mod2).

如果我mod1:在 mod2 中执行“”,它会识别“myfunc”,问题是在运行时当我调用mod1:myfunc(A)我得到“未定义的函数 mod1:myfunc/1”

如果智能感知在 mod2 中检测到我的 mod1 函数,我不明白为什么会出错?

4

1 回答 1

2

在 shell 中,您可以尝试mod1:module_info(exports)查看所有导出函数的列表,但如果您的模块按照上面的方式编写,它应该会产生语法错误。

但是,如果我错了,并且您确实在模块中正确编写了它(即,这里只是一个错字),请尝试在 erlang shell 中执行以下操作:

c(mod1).
c(mod2).

看看这是否适合你。这将为您编译和加载模块。如果您没有编译模块(即,它只是目录中的一个 .erl 文件),那是不够的。

编辑

另外,请确保在 erlang 启动时正确加载了梁文件。这通常是通过启动 erl 来完成的erl -pa /path/to/beams

于 2012-11-06T22:43:24.833 回答