3

我有一个调用我的库的 c 包装器(不是用 c 编写的)。我使用 SWIG 为 javascript 目标生成 interface_wrap.cxx:

swig -c++ -javascript -node interface.i

并使用node-gyp configurenode-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 传递的东西?

4

0 回答 0