使用Erlang启动应用程序
我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。像Wings3D这样的东西 我怎么做?使之成为可能的最佳方法是什么?我在Windows平台上,如果这很重要的话 第二次更新: 嗯,我还没有导出使用Erlang启动应用程序,erlang,Erlang,我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。像Wings3D这样的东西 我怎么做?使之成为可能的最佳方法是什么?我在Windows平台上,如果这很重要的话 第二次更新: 嗯,我还没有导出promotdb:start/0函数,这就是Erlang无法启动的原因(正如Muzaaya Joshua所说,werl-s不起作用)。但现在,我有另一个奇怪的问题。在我的rebar.config中,我有两个依赖项: {deps, [
promotdb:start/0
函数,这就是Erlang无法启动的原因(正如Muzaaya Joshua所说,werl-s
不起作用)。但现在,我有另一个奇怪的问题。在我的rebar.config
中,我有两个依赖项:
{deps, [
{cowboy, ".*", {git, "https://github.com/extend/cowboy.git"}},
{erlydtl, ".*", {git, "https://github.com/evanmiller/erlydtl.git"}}
]
}.
在我开始使用Erlang之后
erl -pa ebin deps/cowboy/ebin deps/erlydtl/ebin deps/proper/ebin -s promodb
我通过应用程序找到:哪个应用程序()只启动了Cowboy:
[{cowboy,"Small, fast, modular HTTP server.","0.4.0"},
{stdlib,"ERTS CXC 138 10","1.18"},
{kernel,"ERTS CXC 138 10","2.15"}]
据我所知,Erlang应该启动我放入promodb.app
文件中的所有需要的应用程序,如下所示:
{application, promodb,
[
{description, ""},
{vsn, "0.1"},
{registered, [promodb_sup]},
{applications, [
kernel,
stdlib,
cowboy,
erlydtl
]},
{mod, { promodb, []}},
{env, []}
]}.
我做错了什么?我认为您需要创建一个发布包和一个启动脚本,如中所述。实际上,
-s
选项在任何地方都可以使用。只需使用erl
而不是werl
。werl
命令尝试在Windows上加载GUI。这是一个很好的工具,你需要检查出来。使用Erlang编写,使用它和许多其他应用程序。我使用
钢筋说明
来打包像钢筋这样的独立软件包。然后,您可以在linux中使用/PackageName
,或在windows中使用escript.exe PackageName
。Erlydtl没有应用程序行为,它的工作方式类似于库。正如您在erlydtl示例中所看到的,不需要启动任何应用程序
选中此项:
erl-pa息税前利润折旧率/*/息税前利润
1> erlydtl:compile(,我的模块名称)
它有效吗
我喜欢使用“描述钢筋”选项来创建可执行文件。谢谢你的回答,但我不确定它是否解决了整个问题。发布之后,我应该有一个完整的Erlang系统和我的应用程序,可以部署,但我仍然没有一个独立的程序。我该怎么做?有一个类似的问题:它有一个指向本指南的链接,可以帮助您:谢谢您的链接,我已经看过了。因为它的发展停止了,所以帮助不大。但正如您所看到的,我还有一个更简单的问题尚未解决:如何在Windows上用任意应用程序启动Erlang?显然,werl和erl都不起作用。对于erl-s,我得到了相同的错误,只是在标准的cmd提示符中。
erl-s mnesia
将启动erlang shell并同时启动mnesia。请记住,如果您有一个名为:myapp
的应用程序,并且它有一个模块说:myapp.erl
,那么让启动整个应用程序的函数为:start/0
,这样您就可以执行:erl-s myapp
谢谢,我不知道力霸有这样的命令。不幸的是,就我而言,它不起作用。我得到了错误:escript:exception错误:未定义的函数promodb:main/1(尽管我甚至在promodb模块中添加了这样的函数)。嗨,我有{escript\u incl\u apps,[]}。{escript_emu_args,“%!-smp auto\n”}。
在my rebar.config中,这可能会对您有所帮助。您还可以查看如何将文件打包到独立的escript包。