Не удается загрузить узел.собственный аддон 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 за помощь мне в этом!