2012-07-03 6 views
6

के साथ बनाया गया काम करता है, मैंने node.js के लिए मूल एडन लिखा है, इसे एमएसवीसी ++ के साथ नोड-जीईपी के बिना संकलित किया है, और इसे सफलतापूर्वक उपयोग किया है नोड आरईपीएल और एक आवेदन में। मैं x64 नोड का उपयोग कर रहा हूं और एक x64 एडन संकलित कर रहा हूं। मैं चीज़ को नोड-जीपीपी के साथ बनाने की कोशिश कर रहा हूं। मुझे विजुअल स्टूडियो समाधान उत्पन्न करने और इसे संकलित करने के लिए नोड-जीपी प्राप्त हुआ है, लेकिन बाहर आने वाला एडन काम नहीं करता है। केवल त्रुटि मैं यह है:नोड-जीईपी के साथ निर्मित होने पर node.js देशी एडन लोड नहीं कर सकता है, लेकिन यह विजुअल स्टूडियो

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 सीखा है लोड हो रहा है के साथ कुछ है लिनक्स पर गतिशील पुस्तकालय, लेकिन नोड के लिए प्रासंगिक कोई उपयोगी जानकारी नहीं मिल सकती है (विशेष रूप से, विंडोज़ पर)। इस एडन को कुछ थर्ड-पार्टी डीएल की आवश्यकता होती है, लेकिन वे मेरे रास्ते पर हैं, और फिर, जब मैं इसे नोड-जीपीपी के बिना संकलित करता हूं तो एडन ठीक काम करता है।

यह काम करने के तरीके को जानने के लिए मुझे क्या करने की आवश्यकता है?

उत्तर

14

यह पता चला कि समस्या NODE_MODULE मैक्रो के उपयोग में है। मैं कुछ इस तरह था:

NODE_MODULE(SomeAddonName, Init) 

लेकिन मेरे binding.gyp इस था:

"target_name": "totallyDifferentName", 

ऐसा लगता है कि binding.gyp में TARGET_NAME (मॉड्यूल नाम के समान करने के लिए पहला तर्क होना चाहिए NODE_MODULE)।

इस के साथ मेरी सहायता के लिए @TooTallNate के लिए धन्यवाद!

+0

आह, मुझे एक ही समस्या है! और यह, ज़ाहिर है, इसे हल किया। धन्यवाद। :-) – blazs

संबंधित मुद्दे