I want to convert a python script to a javascript script. My python script loads the dll and uses its API.
processings2D = ctypes.CDLL('processings2D.dll') print(processings2D.ImageProcessor2DCreate())
I am trying to do the same with node -gyp, but my script does not find the 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 is located in the folder Release /build/Release/processings2D.dll
Am I in the right direction?
source share