Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

C++ Redis मॉड्यूल बनाना - RedisModule_OnLoad () प्रतीक को निर्यात नहीं करता है

ऐसा इसलिए हो रहा है क्योंकि RedisModule_OnLoad आपके सी ++ कंपाइलर द्वारा नाम उलझा रहा है।

RedisModule_OnLoad __Z18RedisModule_OnLoadP14RedisModuleCtxPP17RedisModuleStringi में फिर से नाम दिया जा रहा है जीसीसी द्वारा, इसलिए रेडिस निर्यातित प्रतीक को खोजने में असमर्थ है जिसे वह ढूंढ रहा है।

$ 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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. प्रीडिस के साथ रेडिस टाइमआउट

  2. Node.js, (Hi)Redis और मल्टी कमांड

  3. अपने स्वयं के Azure खाते लाएं - स्केलग्रिड पर MongoDB® और Redis™ के लिए होस्टिंग

  4. डेटा गहन अनुप्रयोगों के लिए जावा + रेडिस बनाम सादा जावा दक्षता?

  5. रेडिस टेम्प्लेट का उपयोग करके स्कैन करने में सक्षम नहीं