2016-11-04 4 views
5

के साथ अजगर प्रकार के पाइथन प्रकार के लिए जावास्क्रिप्ट समकक्ष मैं एक पायथन स्क्रिप्ट को जावास्क्रिप्ट स्क्रिप्ट में बदलना चाहता हूं। मेरी पायथन लिपि एक डीएलएल लोड करती है और इसकी एपीआई का उपयोग करती है।नोड-जीईपी

processings2D = ctypes.CDLL('processings2D.dll') 
print(processings2D.ImageProcessor2DCreate()) 

मैं नोड-जीपीपी के साथ ऐसा करने की कोशिश करता हूं लेकिन मेरी स्क्रिप्ट को डीएल नहीं मिलती है।

test.js

var processings2D = require('./build/Release/processings2D.node'); 
console.log(processings2D.ImageProcessor2DCreate()); 

addon.cc

#include <nan.h> 
#include "processings2D/processings2D.h" 

HINSTANCE hDLL = NULL; 
typedef int(*Fn)(); 

void ImageProcessor2DCreate(const Nan::FunctionCallbackInfo<v8::Value>& info) { 
    hDLL = LoadLibrary("processings2D.dll"); 
    if(!hDLL) 
    { 
     Nan::ThrowTypeError("Cannot load processings2D.dll library"); 
     return; 
    } 

    Fn fn = (Fn)GetProcAddress(hDLL, "ImageProcessor2DCreate"); 
    if (!fn) { 
     Nan::ThrowTypeError("Could not load ImageProcessor2DCreate function"); 
     FreeLibrary(hDLL); 
     return; 
    } 

    info.GetReturnValue().Set(Nan::New(fn())); 
} 

void Init(v8::Local<v8::Object> exports) { 
    exports->Set(Nan::New("ImageProcessor2DCreate").ToLocalChecked(), Nan::New<v8::FunctionTemplate>(ImageProcessor2DCreate)->GetFunction()); 
} 

NODE_MODULE(twoD, Init) 

binding.gyp

{ 
    "targets": [ 
    { 
     "target_name": "processings2D", 
     "sources": [ 
     "addon.cc" 
     ], 
     "include_dirs": [ 
     "<!(node -e \"require('nan')\")" 
     ] 
    } 
    ] 
} 

dll रिलीज फ़ोल्डर में है /build/Release/processings2D.dll

क्या मैं सही दिशा में हूं?

उत्तर

2

समाधान वास्तव में आसान था:

मेरे dll एक 32 बिट संस्करण था, तो मैं अच्छा मेहराब के साथ अपने मॉड्यूल का निर्माण और नोड का अच्छा संस्करण के साथ अपने परीक्षण को अंजाम देना चाहिए।

node-gyp clean configure --arch=ia32 build 
"C:\Program Files (x86)\nodejs\node.exe" test.js