2012-01-09 23 views
3

他のプログラムと同じように実行できるスタンドアロンのErlangアプリケーションを作成したいと思います(.exe実行可能ファイルをクリックしてください)。 Wings3Dのようなものがあります。Erlangでアプリケーションを起動する

どうすればいいですか?それを可能にする最良のアプローチは何ですか?私が重要なのは、Windowsプラットフォーム上です。

第二UPDATE:

まあ、私はpromodb:start/0機能を輸出していない、それはアーランが(werl -sが動作しない、Muzaayaヨシュアが言うように、と)開始could'n理由でした。しかし、今、別の奇妙な問題があります。

erl -pa ebin deps/cowboy/ebin deps/erlydtl/ebin deps/proper/ebin -s promodb 

私は、アプリケーションによって見つける

{deps, [ 
      {cowboy, ".*", {git, "https://github.com/extend/cowboy.git"}}, 
      {erlydtl, ".*", {git, "https://github.com/evanmiller/erlydtl.git"}} 
     ] 
}. 

と私が使用してアーランを開始した後:私のrebar.configで、私は2つの依存関係を持っている唯一のカウボーイが開始されるwhich_application():

[{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, []} 
]}. 

どうしたのですか?

+0

似たような質問があります:http://stackoverflow.com/questions/1795628/erlang-compilation-erlang-as-stand-alone-executeableこのガイドには、http:// www .sics.se /〜joe/sae.html – mqsoh

+0

このリンクをありがとう、私はすでにそれを見ました。開発が止まってからはあまり役に立たない。しかし、あなたが見ているように、私はWindowsで任意のアプリケーションでErlangを起動するにはどうすればいいのでしょうか? – Radek

答えて

3

私はrebar escriptizeを使用して、鉄筋のようなスタンドアロンパッケージをパックします。その後、Linuxでは./PackageName、Windowsではescript.exe PackageNameを使用できます。

+0

ありがとう、私は鉄筋がそのようなコマンドを持っていることを知らなかった。不幸にも、私の場合はうまくいきません。私はエラーが発生しました:エスケープ:例外エラー:未定義の関数promodb:main/1(ただし、私はそのような関数をpromodbモジュールに追加しました)。 – Radek

+0

こんにちは、私は '{escript_incl_apps、[]}を持っています。 {escript_emu_args、 "%%!-smp auto \ n"}。 "私のrebar.configでは、これが役に立ちます。また、http://www.erlang.org/doc/man/escript.htmlをチェックして、ファイルをスタンドアロンのエスケープパッケージにパックする方法を参照することもできます。 – shian

+0

ありがとう、私はそれを確認します。 – Radek

2

documentationで説明されているリリースパッケージとブートスクリプトを作成する必要があると思います。

+0

答えに感謝しますが、それが問題全体を解決するかどうかはわかりません。リリースした後、私は完全なErlangシステムを自分のアプリケーションと一緒に配備する準備ができましたが、私はまだスタンドアロンのプログラムを持っていません。どうしたらいいですか? – Radek

1

実際には-sオプションはどこでも動作します。ただerl NOT werl を使用してください。 werlコマンドは、WindowsでGUIを読み込もうとします。

BitRock Install Builderは、あなたがチェックアウトする必要がある素晴らしいツールです。 Yaws Web ServerはErlangで書かれており、Erlangと他の多くのアプリケーションを使用しています。

+0

さて、明らかに、werlもerlも動作しません。 erl -sでは標準のcmdプロンプトと同じエラーが出ます。 – Radek

+1

'erl -s mnesia'はerlangシェルを起動し、それと共にmnesiaを開始します。 'myapp'という名前のアプリケーションがあり、' myapp.erl'というモジュールがある場合は、アプリケーション全体を起動する関数を 'start/0'にして、' erl -s myapp' –

1

Erlydtlにはアプリケーションの動作がありません。ライブラリのように動作します。 erlydtlの例で分かるように、起動する必要はありません。

https://github.com/evanmiller/erlydtl#template-compilation

チェックこれ:

ERL -pa ebinは、/ */ebin

1のDEP> erlydtl:コンパイル(< < "{{FOO}}" >>、my_module_name)。

動作しますか?

実行可能ファイルを作成するために、rebarオプションをエスケープするのが好きです。

関連する問題