我有一个调用我的库的 c 包装器(不是用 c 编写的)。我使用 SWIG 为 javascript 目标生成 interface_wrap.cxx:
swig -c++ -javascript -node interface.i
并使用node-gyp configure
并node-gyp build
成功获取共享对象。现在我可以转到 nodejs 提示符并成功调用我的 c 函数:
nodejs
> var abc = require('./build/Release/shared_lib_name`)
> abc.c_create("Hello")
这成功地工作在 c 函数的签名是:
int32_t c_create(const char* p_char);
但是,有些函数带有签名,例如:
int32_t c_fun_0(int32_t* p_int32);
int32_t c_fun_1(char* p_char);
它接受一个指向非常量(可变对象)的指针,目的是修改它。
以下是我想要实现的目标,但我缺乏 javascript 背景对我没有帮助:
$ node
> var abc = require('./build/Release/shared_lib_name')
> var some_int = 0
> var same_string = <how to reserve X bytes ?>
> abc.c_fun_0(&some_int)
> abc.c_fun_1(&some_string)
我如何调用 c 函数来改变我从 javascript 传递的东西?