相当于Python ctypes和node-gyp的javascript

我想将一个python脚本转换成一个javascript脚本。 我的Python脚本加载一个DLL并使用其API。

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

我尝试做与node-gyp相同,但我的脚本没有find该DLL。

 console.log(processings2D.ImageProcessor2DCreate()); ^ TypeError: Cannot load processings2D.dll library 

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在Release文件夹/build/Release/processings2D.dll

我在正确的方向?

解决scheme非常简单:

我的DLL是一个32位版本,所以我应该build立我的模块与良好的拱门,并执行我的testing与良好的节点版本。

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