问题描述
我正在将回调传递给 C++ 中的函数。此回调必须接受在 C++ 代码中定义的包含字符数组的结构。
我查看了 Call C++ dll with struct containing char array from Node.js,它讨论了如何将包含 char 数组的结构传递给外部 C++ 函数。但是,我正在努力接受来自外部 C++ 函数的相同性质的结构。
结构体定义为:
struct Info {
long ID;
char chName[128];
};
这是我的 JavaScript 代码:
var StructType = require('ref-struct-napi');
var ArrayType = require('ref-array-napi');
var Info = StructType({
'ID' : 'long','chName' : ArrayType('char',128)
});
var ffi = require('ffi-napi');
var lib = ffi.DynamicLibrary('lib.so',ffi.DynamicLibrary.FLAGS.RTLD_LAZY);
var SetCallback = ffi.ForeignFunction(
lib.get('SetCallback'),'void',['pointer']
);
var callback = ffi.Callback('void',[Info],(info) => {
console.log(`ID: ${info.ID}`);
console.log(`name: ${JSON.stringify(info.chName)}`);
});
SetCallback(callback);
当回调被触发时,info.ID
是正确的,但 info.chName
要么是一个全 0 的数组(我确信这不正确),要么发生了段错误。
我觉得我可能误解了 C++ 在这里的工作方式,希望得到任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)