Использование пользовательских пакетов узлов в Electron

Я пытаюсь использовать пользовательский пакет узлов, который я написал в приложении Electron, и у меня возникают проблемы с инициализацией получающегося пакета DLL / Node. Когда я запускаю свое приложение Electron, я получаю следующую ошибку:

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

Связываемая DLL — это простая библиотека, написанная на C ++, которая имеет одну функцию, которая принимает в качестве входных данных двойное число и просто добавляет к нему одну, возвращая результат. Для сборки библиотеки 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 и исходные файлы для моей библиотеки определены следующим образом:

%module MaceAPI

%{
#include "./mace_api.cpp"%}

%include <windows.i>
%include "./mace_api.h"
{
"targets": [
{
"target_name": "mace-api",
"sources": [ "./src/mace_api_wrap.cxx" ]
}
]
}
#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
#include "mace_api.h"
MaceAPI::MaceAPI()
{
}

double MaceAPI::addOne(double input)
{
double ret = input + 1.0;
return ret;
}

SWIG берет исходные файлы C ++ и в основном пишет оболочку, которая может использоваться, в данном случае, node-gyp для сборки пакета Node. Кто-нибудь пытался использовать собственный модуль Node, встроенный таким образом, в приложение Electron? Я что-то упускаю из-за того, как SWIG создает оболочку для моей библиотеки C ++, или как Electron обрабатывает пользовательские пакеты Node? Я могу связать библиотеку с Node, но не с Electron. Любая помощь будет оценена.

Для полноты ниже я пытаюсь включить и использовать свой пакет в приложении Electron:

var libMaceTest= require('mace-api/build/Release/mace-api');
var test = new libMaceTest.MaceAPI();
console.log(test.addOne(5));

0

Решение

Вы проверили https://github.com/electron/electron/blob/master/docs/tutorial/using-native-node-modules.md#manually-building-for-electron

В частности,

Ручная сборка для 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 = ~ / .electron-gyp меняет, где искать заголовки разработки.

—target = 1.2.3 — это версия Electron. —Dist-url = … указывает, где загружать заголовки. —Arch = x64 говорит, что модуль построен
для 64-битной системы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector