Using custom node packages in Electron(在Electron中使用自定义节点包)
问题描述
我正在尝试使用我在Electron应用程序中编写的自定义节点包,但在初始化生成的DLL/Node包时遇到了问题。当我启动电子应用程序时,我收到以下错误:
Uncaught Error: A dynamic link library (DLL) initialization routine failed.
要链接的DLL是一个用C++编写的简单库,它有一个函数,该函数接受双精度值作为输入,然后简单地将其加一,返回结果。要构建C++库,我使用swg(http://www.swig.org/)和node-gyp,命令如下:
swig -c++ -javascript -node ./src/mace_api.i
node-gyp clean configure build
mace_api是我试图构建的包。Mace_api.i、binding.gyp文件和我的库的源文件的定义如下:
mace_api.i
%module MaceAPI
%{
#include "./mace_api.cpp"
%}
%include <windows.i>
%include "./mace_api.h"
binding.gyp
{
"targets": [
{
"target_name": "mace-api",
"sources": [ "./src/mace_api_wrap.cxx" ]
}
]
}
mace_api.h
#ifndef MACE_API_H
#define MACE_API_H
#include <iostream>
#include <functional>
using namespace std;
class MaceAPI
{
public:
MaceAPI();
double addOne(double input);
};
#endif // MACE_API_H
mace_api.cpp
#include "mace_api.h"
MaceAPI::MaceAPI()
{
}
double MaceAPI::addOne(double input)
{
double ret = input + 1.0;
return ret;
}
Swg获取C++源文件,并基本上编写了一个包装器,在本例中,它可以由node-gyp用来构建一个Node包。有没有人尝试过在电子应用程序中使用以这种方式构建的自定义节点模块?我是不是错过了SWIG如何为我的C++库生成包装器,或者Electron如何处理定制的节点包?我可以将图书馆与Node链接,但不能与Electron链接。如有任何帮助,我们将不胜感激。
为完整起见,以下是我尝试在电子应用程序中包含和使用我的包的方式:
var libMaceTest= require('mace-api/build/Release/mace-api');
var test = new libMaceTest.MaceAPI();
console.log(test.addOne(5));
推荐答案
您是否已签出https://github.com/electron/electron/blob/master/docs/tutorial/using-native-node-modules.md#manually-building-for-electron
具体来说,
手动生成电子
如果您是开发本机模块的开发人员,并且希望对其进行测试 与Electron对抗,您可能想要为Electron重建模块 手工操作。您可以直接使用node-gyp为Electron构建:
cd /path-to-module/ HOME=~/.electron-gyp node-gyp rebuild
--target=1.2.3 --arch=x64 --dist-url=https://atom.io/download/atom-shell
home=~/.Electronics-gyp更改在哪里可以找到开发头文件。 这个 --Target=1.2.3是Electron的版本。--dist-url=...指定下载标头的位置。Arch=x64表示模块已构建 适用于64位系统。
这篇关于在Electron中使用自定义节点包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Electron中使用自定义节点包
基础教程推荐
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 设计字符串本地化的最佳方法 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01