我有一个调用我的库的c-wrapper(不是用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);
其中包含指向非const(可变对象)的指针,目的是修改它。
以下是我想要实现的目标,但我缺乏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传递的东西?