1

同じsrcフォルダーに2つのモジュールがあります。mod1は、モジュールmod2で使用したい関数を宣言します。

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

myfunc(A) -> {ok}.

他のモジュールでは、mod1をインポートしません。

-module(mod2).

mod2で「mod1:」を実行すると「myfunc」が認識されます。実行時にmod1:myfunc(A)「undefinedfunctionmod1:myfunc/1」を呼び出すと問題が発生します。

インテリセンスがmod2でmod1関数を検出した場合にエラーが発生する理由がわかりませんか?

4

1 に答える 1

2

シェルから、エクスポートされたすべての関数のリストを確認してみることができますがmod1:module_info(exports)、モジュールが上記のように記述されている場合は、構文エラーが発生するはずです。

ただし、私が間違っていて、実際にモジュールに正しく書き込まれている場合(つまり、ここではタイプミスにすぎない場合)、erlangシェルで次のことを試してください。

c(mod1).
c(mod2).

そして、それがあなたのために働くかどうか見てください。これにより、モジュールがコンパイルおよびロードされます。モジュールをコンパイルしていない場合(つまり、ディレクトリ内の.erlファイルだけの場合)、それでは不十分です。

編集

また、erlangの起動時にビームファイルが正しくロードされていることを確認してください。これは通常、erlを起動することによって行われます。erl -pa /path/to/beams

于 2012-11-06T22:43:24.833 に答える