Как отправить переменную node.js в привязку C ++ "по ссылке" - PullRequest
0 голосов
/ 05 февраля 2019

Справочная информация:

У меня есть какой-то код, полученный от внешней компании.
Это написано в C++ (предоставлено для использования в качестве двоичного файла), и яЯ использую файлы заголовков для создания привязки к node.js.

Весь код упрощен для удобства чтения

Проблема:

Одна из функций, которые мне нужно использовать, имеет этот заголовок:

int connect(int* session_id_out)

Они также предоставляют пример того, как использовать их код в C++, где у нас есть что-то вроде:

int session_id = -1;
int rc;
// the connect function modifies the session_id within the code.
rc = connect(&session_id)
if (rc < 0) {
    ...
}
// session_id now has the correct session value.

После успешного получения привязки к сборке, у меня естьфункция connect распознается в node, но мне не удается отправить требуемую переменную.Это потому, что node не отправляет ссылку на примитивную переменную (хотя он отправляет объекты / массивы по ссылке).

Когда я пытаюсь что-то вроде:

const newModule = require('./build/Release/something')
let trial = 1
res = newModule.connect(trial)

Iget:

Error: in method 'connect', argument 1 of type 'int *'

Я попытался изменить переменную trial на массив, объект и многие другие вещи, однако их собственный код упакован внутри двоичного файла, поэтомувероятно, маловероятно изменить код на их конце.

Дополнительная информация:

Действительно раздражает то, что они предоставляют пример привязки в java, где онисделать следующее (что, якобы, работает):

int[] out = new int[1]
int ret = connect(out)
...