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