gpt4 book ai didi

c++ - 在 Electron 中使用自定义 Node 包

转载 作者:行者123 更新时间:2023-12-03 12:29:36 24 4
gpt4 key购买 nike

我正在尝试使用我在 Electron 应用程序中编写的自定义 Node 包,但无法初始化生成的 DLL/Node 包。当我启动我的 Electron 应用程序时,我收到以下错误:

Uncaught Error: A dynamic link library (DLL) initialization routine failed.

被链接的 DLL 是一个用 C++ 编写的简单库,它有一个函数,它接受一个 double 作为输入,然后简单地向它添加一个,然后返回结果。为了构建 C++ 库,我使用 SWIG ( 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"

绑定(bind).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;
}

SWIG 采用 C++ 源文件,基本上编写了一个 package 器,在这种情况下,node-gyp 可以使用它来构建一个 Node 包。有没有人尝试在 Electron 应用程序中使用以这种方式构建的自定义 Node 模块?我是否遗漏了 SWIG 如何为我的 C++ 库生成 package 器,或者 Electron 如何处理自定义 Node 包?我可以将库与 Node 链接,但不能与 Electron 链接。任何帮助,将不胜感激。

为了完整起见,以下是我尝试在我的 Electron 应用程序中包含和使用我的包的方式:
var libMaceTest= require('mace-api/build/Release/mace-api');
var test = new libMaceTest.MaceAPI();
console.log(test.addOne(5));

最佳答案

你 checkout 了吗https://github.com/electron/electron/blob/master/docs/tutorial/using-native-node-modules.md#manually-building-for-electron

具体来说,

Manually building for Electron

If you are a developer developing a native module and want to test it against Electron, you might want to rebuild the module for Electron manually. You can use node-gyp directly to build for 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

The HOME=~/.electron-gyp changes where to find development headers. The --target=1.2.3 is version of Electron. The --dist-url=... specifies where to download the headers. The --arch=x64 says the module is built for 64bit system.

关于c++ - 在 Electron 中使用自定义 Node 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40285844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com