0

私は erlang プロジェクトを持っており、自己完結型の erlang escript を生成するつもりです。そのために rebar escriptize を使用、rebar.conf にすべての依存関係とその他のオプションを追加しました。

{erl_opts, [{parse_transform, lager_transform}]}.
{lib_dirs,["deps"]}.

{deps, [
{'lager', ".*", {
  git, "git://github.com/basho/lager.git", {tag, "2.0.0"}}
},
{'cowboy', ".*", {
    git, "git://github.com/ninenines/cowboy.git", {tag, "2.0.0-pre.1"}}
},
{'jsx', ".*", {
    git, "git://github.com/talentdeficit/jsx.git", {tag, "v2.0.4"}}
}
]}.


{escript_emu_args, "%%! -smp auto\n"}.
{escript_emu_args, "%%! -pz ../dir-of-some-beams\n"}.
{escript_name, "multiscreen_ws_app"}.
{escript_incl_apps,   [sasl,stdlib,kernel,ranch,crypto,cowlib,cowboy,asn1,public_key,ssl,jsx,compiler    ,syntax_tools,lager,goldrush]}.

もちろん、スクリプトを開始するメイン モジュールにメイン メソッドを作成しました。escript multiscreen_ws_app コマンドを使用して生成されたスクリプトを実行するとプログラムの出力は正常に表示されますが、最初の websocket pagckage を受信して​​ BAM で復号化しようとすると、機能せず、次のメッセージが表示されます。

17:03:30.222 [error] Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library c:/Users/alessandro.herculano/Music/mul
tiscreen_ws_app/crypto/priv/lib/crypto: 'Couldn't load the specified method
ecificado.'"
OpenSSL might not be installed on this system.

奇妙な事実は、フォルダーのように、スクリプト ファイル内を検索しようとすることです。c:/Users/alessandro.herculano/Music/multiscreen_ws_app/crypto/priv/lib/crypto ですが、 multiscreen_ws_appは私のスクリプト ファイルです。スクリプトが別の事前定義された場所で検索するようにするにはどうすればよいですか?

-------重要かもしれないいくつかのポイント----

  • Windows 8 x64マシンで実行しています
  • スクリプトを使用せずに実行すると、アプリは問題なく動作します
  • メインの上部で暗号フォルダーを示すcode:add_pathzを使用しようとしましたが、うまくいきませんでした。
4

1 に答える 1

0

解決策を見つけたところです。私のせいです。escript_incl_apps リストから「crypto」を削除するだけで問題が解決します。

于 2015-10-06T20:23:52.037 に答える