gpt4 book ai didi

erlang - Emakefile - 自定义行为未定义

转载 作者:行者123 更新时间:2023-12-04 20:55:40 25 4
gpt4 key购买 nike

我的 test项目的结构是这样的:

./Emakefile:

{"source/*", [debug_info, {outdir, "binary"}]}.

./source/test.erl:
-module(test).
-behaviour(test_behaviour).

./source/test_behaviour.erl:
-module(test_behaviour).
-export([behaviour_info/1]).

behaviour_info(callbacks) -> [];
behaviour_info(_) -> undefined.

当我使用命令 erl -make在项目目录( . )中,我得到以下输出:

重新编译:source/test_behaviour
重新编译:源码/测试
源/test.erl:2:警告:行为 test_behaviour 未定义

为什么 erl打印此警告?它编译了 test_behaviour.erl之前 test.erl ,所以我想应该可以找到 test_behaviour.beambinary文件夹。

最佳答案

行为在编译时解决。因此,Erlang 编译器应该找到行为束文件并调用行为模块的 behaviour_info/1功能。

这里 test_behaviour.beam 不在编译器的代码路径中。您可以通过调用运行

erl -pa ebin -make

这为我解决了这个问题。我尝试在 Emakefile 中指定,但没有运气。也找不到文档。
还发现 -pa ebin 的 oder 必须在 -make 之前(虽然不知道为什么)。

关于erlang - Emakefile - 自定义行为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16198171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com