您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

创建C ++ Redis模块-“不导出RedisModule_OnLoad()符号”

创建C ++ Redis模块-“不导出RedisModule_OnLoad()符号”

这是发生,因为RedisModule_OnLoad越来越重整名称由C ++编译器。

RedisModule_OnLoad__Z18RedisModule_OnLoadP14RedisModuleCtxPP17RedisModuleStringiGCC 重命名为,因此Redis找不到所需的导出符号。

$ nm avromodule.so | grep OnLoad                   
0000000000000970 T __Z18RedisModule_OnLoadP14RedisModuleCtxPP17RedisModuleStringi

您可以使用extern "C"指令来确保您导出的符号保持未破坏状态。

#include "redismodule.h"
#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif

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;
}

#ifdef __cplusplus
}
#endif

导致导出未损坏的符号

nm avromodule.so | grep OnLoad                   
0000000000000970 T _RedisModule_OnLoad
其他 2022/1/1 18:18:05 有482人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶