Не удается загрузить узел.собственный аддон js при построении с node - gyp, но он работает при построении с Visual Studio

Я написал собственный аддон для node.js, скомпилировал его с MSVC++ без node-gyp и успешно использовал его на узле REPL и в приложении. Я использую узел x64 и компилирую аддон x64. Я пытаюсь построить эту штуку с помощью node-gyp. Я получил node-gyp для создания решения Visual Studio и его компиляции, но аддон, который выходит, не работает. Только ошибки я получаю это:

Error: The specified procedure could not be found.

    at Object.Module._extensions..node (module.js:480:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at repl:1:13
    at REPLServer.self.eval (repl.js:111:21)
    at rli.on.e (repl.js:260:20)
    at REPLServer.self.eval (repl.js:118:5)
    at Interface.<anonymous> (repl.js:250:12)

когда я запускаю скрипт, который пытается загрузить аддон, я вам это:

module.js:480
  process.dlopen(filename, module.exports);
          ^
Error: The specified procedure could not be found.

    at Object.Module._extensions..node (module.js:480:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (c:blahtestheaders.js:1:75)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

я узнал, что dlopen имеет какое-то отношение к загрузке динамических библиотек в Linux, но не может найти никакой полезной информации, относящейся к узлу (в частности, в Windows.). Этот аддон требует некоторых сторонних библиотек DLL, но они находятся на моем пути, и снова аддон отлично работает, когда я компилирую его без node-gyp.

что мне нужно сделать, чтобы выяснить, как это сделать?

1 ответов


оказалось, что проблема заключалась в моем использовании макроса NODE_MODULE. У меня было что-то вроде этого:

NODE_MODULE(SomeAddonName, Init)

но моя привязка.у джипа было такое:--3-->

"target_name": "totallyDifferentName",

получается, что имя в привязке.gyp должен совпадать с именем модуля (первый аргумент для NODE_MODULE).

спасибо @TooTallNate за помощь мне в этом!