Javascript equivalent for python types with node -gyp

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?

+6
source share
1 answer

The solution was very simple:

My dll was a 32-bit version, so I have to build my module with a good arc and run my test with a good version of node.

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

Source: https://habr.com/ru/post/1012039/


All Articles