c - Erlang nif does not upgrades -


i write nif library in erlang. write load, upgrade , unload functions.

this code:

#include "erl_nif.h"   int checksum(char *s) {     return 123; }   ///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////   static erl_nif_term checksum_nif(erlnifenv* env, int argc, const erl_nif_term argv[]) {     return enif_make_int(env, checksum("")); }   ///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////   static int load(erlnifenv* env, void** priv_data, erl_nif_term load_info) {     *priv_data = enif_open_resource_type(env,                                          null,                                          "cwm_utils_buf",                                          null,                                          erl_nif_rt_create | erl_nif_rt_takeover,                                          null);     return 0; }   static int upgrade(erlnifenv* env, void** priv_data, void** old_priv_data, erl_nif_term load_info) {     *priv_data = enif_open_resource_type(env,                                          null,                                          "cwm_utils_buf",                                          null,                                          erl_nif_rt_takeover,                                          null);     return 0; }   static void unload(erlnifenv* env, void* priv_data) {     return ; }   static erlniffunc nif_funcs[] = {     {"checksum", 1, checksum_nif} };    erl_nif_init(mynif, nif_funcs, &load, null, &upgrade, &unload); 

in erlang shell load nif , run checksum function , returns 123 , fine!

after change return value of checksum 123456 , compile , load nif erlang vm using l(mynif) command.

here problem! if run checksum function, return value must 123445 still 123 , nif have not been upgraded.

what problem? search lot , tested examples , libraries jiffy didn`t work.

try:

code:purge(mynif). code:delete(mynif). l(mynif).