I am having some trouble loading my Redis module. I am just copying the example from https://redis.io/topics/modules-intro, but I stripped it down.
#include "redismodule.h"
#include <stdlib.h>
int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
if (RedisModule_Init(ctx,"avromodule",1,REDISMODULE_APIVER_1)
== REDISMODULE_ERR) return REDISMODULE_ERR;
return REDISMODULE_OK;
}
This is saved in avromodule.cpp. I compile it using the following:
g++ -shared -fPIC -o avromodule.so avromodule.cpp
Then I go over to the Redis CLI and try to load the module.
10.XXX.XXX.XXX:7004> module load /path/to/module/avromodule.so
(error) ERR Error loading the extension. Please check the server logs.
The server logs give me the following error:
159392:M 17 May 10:21:19.773 # Module /path/to/module/avromodule.so does not export RedisModule_OnLoad() symbol. Module not loaded.
The above error makes no sense to me, because I get the following output using the 'nm' command:
$ nm -CD avromodule.so | grep " T "
0000000000003622 T RedisModule_OnLoad(RedisModuleCtx*, RedisModuleString**, int)
000000000000366c T _fini
0000000000002878 T _init
Does anyone have a clue what could be going wrong here? I know that I am using C++ as opposed to the recommended C, but this should still work AFAIK.