Как в Node.js использовать библиотеку С++?

161
13 сентября 2019, 17:10

Есть (динамическая) библиотека C++ с таким содержимым:

// main.cpp
#include <iostream>
#include <vector>
extern "C"
{
    // A function adding two integers and returning the result
    int SampleAddInt(int i1, int i2)
    {
        return i1 + i2;
    }
    std::vector<int> Addition(int v)
    {
        std::vector<int> x = {1, 2, 3};
        return x;
    }
}

Нужно подключить и использовать функции из нее в модуле Node.js.

var ref = require('ref');
var ffi = require('ffi');
var testlib = ffi.Library('/home/anton/Documents/CodeBlocks_projects/testlib/bin/Release/liblibtestlib.so', {
    'SampleAddInt': [ 'int', [ 'int', 'int' ] ],
    'Addition': [ ref.refType(ref.types.void), [ 'int' ] ]
});
console.log(testlib.SampleAddInt(5, 9));
console.log(testlib.Addition(5));

В консоле получаю:

14
Segmentation fault (core dumped)

Первая функция отрабатывает; вторая, соответственно, нет. Как правильно объявить тип vector, используя пакет ffi? Желательно не меняя кода самой библиотеки. Либо подскажите любой другой вариант подключения билиотек.

READ ALSO
Функция _gethe() [закрыт]

Функция _gethe() [закрыт]

Как используя функцию _getch() реализовать(задание с калькулятором из института): 1) вводим 1, потом 2, потом 3 и тд

135
Подключение к websocket C++

Подключение к websocket C++

Пытаюсь написать бота для GoodGame, для этого надо подключиться к websocketПытался сделать через boost::asio, но ничего не вышло

129
Использование с++ класса из чистого си [закрыт]

Использование с++ класса из чистого си [закрыт]

Имеется плюсовая библиотекаИ требуется написать обёртку к парочке ее функций

119
Сложение двоичного кода заданного 2 массивами C++

Сложение двоичного кода заданного 2 массивами C++

Код приведенный ниже выполняет сложение 2 массивов которые являются двоичными числамиДолго думал над данным кодом, но что-то пошло не так

112