使用#ifndef会破坏node-gyp模块

时间:2013-11-20 19:22:54

标签: c++ node.js v8 node-gyp ifndef

我正在使用node.jsC++编写node-gyp模块,但是当我修复所有错误时,例如在this问题中,其中包括删除多余的声明通过添加

#ifndef BUILDING_NODE_EXTENSION

#endif  

到我的档案。然后我收到错误

module.js:356
  Module._extensions[extension](this, filename);
                               ^
Error: Symbol graph_module not found.
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/home/project/test.js:1:75)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

但是当我删除它们时一切正常,而我只是得到编译器警告,如

  CXX(target) Release/obj.target/graph/graph/addon.o
../graph/addon.cc:2:9: warning: 'BUILDING_NODE_EXTENSION' macro redefined
#define BUILDING_NODE_EXTENSION

我不明白为什么会这样,而且如果可能的话我想摆脱编译器警告。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

看起来您忘记在绑定中使用NODE_MODULE宏或模块的名称.gyp与NODE_MODULE中使用的内容不匹配

答案 1 :(得分:0)

要摆脱编译器警告,请尝试替换

#define BUILDING_NODE_EXTENSION

#define BUILDING_NODE_EXTENSION 1