Erlang 加载

Posted

技术标签:

【中文标题】Erlang 加载【英文标题】:Erlang deps loading 【发布时间】:2015-07-20 09:46:03 【问题描述】:

我正在尝试编写 erlang 第一个应用程序。它有 https://github.com/emedia-project/erlffmpeg 在部门,我几乎有 相同的 Makefile。

当我在 erlffmpeg 目录和 eval README 中运行 erlang shell 例如,一切正常。但是当我从项目的目录中执行此操作时,出现错误 喜欢:ucp detect undef。所以,我的 erl shell 看到了来自 ffmpeg 的 fns 模块,但是当我尝试评估这个 fns 时,shell 似乎不知道 关于 ffmpeg 的继承部门。

我使用make dev 命令运行erl shell。总之就是erl -pa ebin deps/*/ebin

似乎我缺少一些关于模块加载的知识。 我该怎么办?你建议我读什么?

谢谢!

【问题讨论】:

【参考方案1】:

所以,答案是使用rebar 并将deps 设置为:

deps, [
   ffmpeg, ".*", git, "https://github.com/emedia-project/erlffmpeg", "master"
].

在这种情况下rebar 将自动下载根目录deps 中的所有内部依赖项,因此带有命令erl -pa ebin deps/*/ebin 的shell 将连接所有.beam 文件。

非常感谢友好的#erlang 成员。

【讨论】:

您也可以运行 rebar shell 来获取一个 erl repl,并为您的应用程序及其依赖项正确设置了加载路径。

以上是关于Erlang 加载的主要内容,如果未能解决你的问题,请参考以下文章

Erlang热门代码加载

Erlang,如何加载应用程序及其依赖项

加载路径中的所有 erlang 模块

在 Elixir 或 Erlang 中,如何在运行时动态创建和加载模块?

如何在Elixir或Erlang中在运行时动态创建和加载模块?

在 Mac M1 上从 erlang 调用加载 Snowflake ODBC 驱动程序时出错:odbc.connect