Справочная информация:
У меня есть какой-то код, полученный от внешней компании.
Это написано в 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)