2012-07-03 71 views
6

我已經寫了node.js的原生內置插件,用MSVC編譯它++沒有節點GYP作品,並用它成功地在節點REPL上和應用程序中。我正在使用x64節點並編譯一個x64插件。我試圖用node-gyp來構建這個東西。我已經得到node-gyp來生成一個Visual Studio解決方案並編譯它,但是出來的插件不起作用。我得到的唯一錯誤是這樣的:不能node.js的本地插件加載,但它在與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,但它們在我的路徑上,並且再次,當我在沒有node-gyp的情況下編譯它時,插件工作正常。

什麼我需要做的,弄清楚如何使這項工作?

回答

14

原來,這個問題在我使用NODE_MODULE宏用來填充的鋪設。我有這樣的事情:

NODE_MODULE(SomeAddonName, Init) 

但我binding.gyp過這樣的:

"target_name": "totallyDifferentName", 

事實證明,在TARGET_NAME必須binding.gyp是相同的模塊名稱(第一個參數NODE_MODULE)。

感謝@TooTallNate幫助我這個!

+0

啊,我有完全相同的問題!而這當然解決了它。謝謝。 :-) – blazs

相關問題