Невозможно загрузить собственный аддон node.js при сборке с помощью node -gyp, но он работает при сборке с помощью Visual Studio

Я написал собственный аддон для node.js, скомпилировал его с помощью MSVC++ без узла -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:\blah\testheaders.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, но они есть на моем пути, и опять же, аддон работает нормально, когда я компилирую его без узла -gyp.

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

6
задан Jake 3 July 2012 в 21:29
поделиться