Erlang 来自其他模块的功能未检测到

Erlang 来自其他模块的功能未检测到,erlang,intellisense,Erlang,Intellisense,我在同一个src文件夹中创建了两个模块。mod1声明了我希望在模块mod2中使用的函数: -module(mod1). -export([myfunc/1]). myfunc(A) -> {ok}. 在其他模块中,我没有导入mod1: -module(mod2). 如果我在mod2中执行“mod1:”,它会识别“myfunc”,问题是在运行时调用mod1:myfunc(A)I得到“未定义的函数mod1:myfunc/1” 如果intellisense在mod2中检测到我的mod1函数

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

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

myfunc(A) -> {ok}.
在其他模块中,我没有导入mod1:

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


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

从shell中,您可以尝试执行
mod1:module\u info(exports)
以查看所有导出函数的列表,但如果您的模块按上述方式编写,则应该会生成语法错误

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

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

编辑


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

对不起,我写得正确,我在这个问题上打错了。这两个模块都编译得更精细。我已经从我的答案中删除了对语法错误的引用。如果您在erlang shell中键入
mod1:module_info(exports)
,会发生什么情况?此外,我已经编辑了我的答案,以包含另一个建议,以确保您的模块正确加载。好的,我已经计算过了-这是因为我没有编译。我正在复制和粘贴我的编译命令,但没有包括mod1。所以,当我关闭终端并粘贴命令时,并不是每次都编译mod1。谢谢你!