Есть (динамическая) библиотека 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? Желательно не меняя кода самой библиотеки.
Либо подскажите любой другой вариант подключения билиотек.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости