Использование #ifndef breaks node-gyp module

Я пишу node.js модуль с использованием C++ а также node-gyp но когда я исправляю все ошибки, как в этом вопросе, который включал избавление от избыточных объявлений путем добавления

#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 ответа

Чтобы избавиться от предупреждений компилятора, попробуйте заменить

#define BUILDING_NODE_EXTENSION

с

#define BUILDING_NODE_EXTENSION 1

Похоже, вы либо забыли использовать макрос NODE_MODULE, либо имя вашего модуля в binding.gyp не соответствует тому, что используется в NODE_MODULE

Другие вопросы по тегам