C++ 用C+编写的访问设备SDK+;来自节点JS

C++ 用C+编写的访问设备SDK+;来自节点JS,c++,node.js,dll,electron,C++,Node.js,Dll,Electron,以下内容也是关于 我们有一个可以扫描文档/条形码/QRcode并通过USB输出的接口。设备制造商已经给出了一个仅用CpHARP、C++、java编写的SDK。现在我们决定访问,从节点访问C++代码。经过多个小时的痛苦,我能够运行这个C++代码,它碰巧是控制台应用程序,它将打印控制台中扫描的文档数据,并将扫描文档保存在特定位置。现在的要求是,无论设备如何处理C++代码,我们都需要从节点上做它,除了在控制台上打印它,而我们必须在使用角开发的Web应用程序中显示它。我在纳皮峰、C++和Advon节点中

以下内容也是关于

我们有一个可以扫描文档/条形码/QRcode并通过USB输出的接口。设备制造商已经给出了一个仅用CpHARP、C++、java编写的SDK。现在我们决定访问,从节点访问C++代码。经过多个小时的痛苦,我能够运行这个C++代码,它碰巧是控制台应用程序,它将打印控制台中扫描的文档数据,并将扫描文档保存在特定位置。现在的要求是,无论设备如何处理C++代码,我们都需要从节点上做它,除了在控制台上打印它,而我们必须在使用角开发的Web应用程序中显示它。我在纳皮峰、C++和Advon节点中发现了一些解决方案,SWIG用于创建包装类。我在这里有点困惑如何继续,因为我不知道上述两种建议的方法将如何工作,甚至对于所提到的要求是可行的。我还想利用设备制造商提供的SDK,因为它拥有设备的所有/大部分功能

总结上述冗长的要求:

    > p>我有一个C++ SDK,它与设备通信,我想使用它。 对于从NoDE.js访问的C++代码,我该如何进行?如果 我要用上面提到的任何一种方法,我需要吗 重写C++代码,从No.js

    访问
  • ,如果你想 一看。它有C++、CpHARP、java,但我们可以集中在C++

  • 上。

上述链接中的所有代码受设备制造商版权保护。对于C++接口,我没有任何声明,你可以为节点创建C++插件。插件将把函数作为模块公开给节点,例如
const myCppApi=require('bindings)('yourNativeAddonName')
区别在于模块背后的代码不是javascript,而是调用编译代码的本机包装器。或者换句话说,你可以使用你的条形码扫描仪的C++ API。 这方面的示例可以在node.js API文档中找到

出于您的目的,我建议您使用N-API而忽略其他方法,因为N-API并不依赖于您对v8(
v8::
名称空间、隔离、上下文等)以及chromium的工作原理了解太多。相反,一切都被简化了

您可以查看这个示例存储库,了解如何使用N-API

有用的提示: 由于我看到您正在使用electron,请确保根据electron使用的相同节点版本构建模块。您可以通过在主流程中打印
process.version
或在电子页面上进行检查