使用Erlang启动应用程序

使用Erlang启动应用程序,erlang,Erlang,我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。像Wings3D这样的东西 我怎么做?使之成为可能的最佳方法是什么?我在Windows平台上,如果这很重要的话 第二次更新: 嗯,我还没有导出promotdb:start/0函数,这就是Erlang无法启动的原因(正如Muzaaya Joshua所说,werl-s不起作用)。但现在,我有另一个奇怪的问题。在我的rebar.config中,我有两个依赖项: {deps, [

我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。像Wings3D这样的东西

我怎么做?使之成为可能的最佳方法是什么?我在Windows平台上,如果这很重要的话

第二次更新:

嗯,我还没有导出
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包。