Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 与node-gyp一样的python ctypes的javascript等价物大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将 python脚本转换为 javascript脚本.我的python脚本加载一个DLL并使用它的API.

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

我尝试使用Node-gyp做同样的事情,但我的脚本找不到dll.

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

test.js

var processings2D = @R_262_10613@ire('./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 \"@R_262_10613@ire('nan')\")"
      ]
    }
  ]
}

dll位于Release文件夹/build/Release/processings2D.dll中

我是朝着正确的方向吗?

解决方法

解决方案非常简单:

我的dll是32位版本,所以@R_752_10675@用良好的arch构建我的模块并使用良好版本的节点执行我的测试.

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

大佬总结

以上是大佬教程为你收集整理的node.js – 与node-gyp一样的python ctypes的javascript等价物全部内容,希望文章能够帮你解决node.js – 与node-gyp一样的python ctypes的javascript等价物所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。