Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Tạo C ++ Redis Module - không xuất biểu tượng RedisModule_OnLoad ()

Điều này đang xảy ra vì RedisModule_OnLoad đang bị trình biên dịch C ++ của bạn làm sai tên.

RedisModule_OnLoad đang được đổi tên thành __Z18RedisModule_OnLoadP14RedisModuleCtxPP17RedisModuleStringi bởi GCC, vì vậy Redis không thể tìm thấy biểu tượng đã xuất mà nó đang tìm kiếm.

$ nm avromodule.so | grep OnLoad                   
0000000000000970 T __Z18RedisModule_OnLoadP14RedisModuleCtxPP17RedisModuleStringi

Bạn có thể sử dụng extern "C" chỉ thị để đảm bảo các ký hiệu đã xuất của bạn không bị lệch.

#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

Điều này dẫn đến việc xuất một biểu tượng không có dấu gạch chéo

nm avromodule.so | grep OnLoad                   
0000000000000970 T _RedisModule_OnLoad



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các phím sắp xếp của Spring Redis

  2. Cần tây / Làm lại cùng một tác vụ được thực hiện song song nhiều lần

  3. Lỗi:Kết nối lại với 127.0.0.1:6379 không thành công - kết nối ECONNREFUSED 127.0.0.1:6379

  4. Làm cách nào để tôi có thể cài đặt thư viện Redis perl theo cách thủ công, tức là ngoại tuyến. Và từ đâu tôi có thể lấy tất cả các phụ thuộc để cài đặt

  5. Làm việc với các đối tượng lồng nhau trong Redis?