7

nif ライブラリがあり、再コンパイルするたびに、シェルを再起動してこのライブラリをリロードまたはアップグレードする必要があります。

これが私のアーランコードです:

-module(q4).
-export([init/0]).

-on_load(init/0).


init() ->
    erlang:load_nif("./q4_nif", reload).

erlang モジュールをコンパイルするたびに、次のエラーが発生します。

`The on_load function for module q4 returned {error,
                                         {upgrade,
                                          "Upgrade not supported by this NIF library."}}`

関数を呼び出すとinit/0、次のエラーが発生します。 {error,{reload,"Reload not supported by this NIF library."}}

この問題を修正して、シェルを再起動せずに新しい nif ライブラリをロードする方法はありますか?

4

3 に答える 3

6

エラー メッセージが示すようupgradeに、NIF で関数を提供する必要があります。これは、への呼び出しで指定しますERL_NIF_INIT

ERL_NIF_INIT(MODULE, ErlNifFunc funcs[], load, reload, upgrade, unload)

アップグレード機能については、erl_nifman ページに記載されています。

于 2015-10-30T00:36:10.613 に答える