我正在使用Node.js ffi插件来调用C ++ DLL。
我遇到的问题是我正在提供的结构 - 它包含一个char数组 - 我不相信我正确设置它。 因此,我无法访问内容。
从C ++头文件中定义Routine:
$data = [
"employees" => [
"first_name",
"departament" => [
"name"
]
],
];
Guzzle::get('http://api.project.com/list/', [
'headers' => [
'Content-Type' => 'application/json',
],
'json' => $data,
]);
MyConfig 结构在C ++中定义如下:
int GetSysConfig(MyConfig * config);
我对应的Node.js结构定义:
typedef struct{
int attribute;
char path[256];
}MyConfig;
注意:下面是我从Node.js调用DLL的地方 - 虽然我错了,但我认为这里没有问题。
var ffi = require('ffi');
var ref = require('ref');
var StructType = require('ref-struct');
var ArrayType = require('ref-array');
// This seems to be the problematic part?
var charArray = ArrayType('char');
charArray.length = 256;
var MyConfig = StructType({
'attribute' : 'int',
'path' : charArray
})
有谁知道我在哪里出错?
答案 0 :(得分:0)
对于包含数组的结构:应定义这些结构,并将其大小指定为ArrayType的参数。
例如:
ArrayType('char', 256)
因此我的问题的解决方法如下:
var MyConfig = StructType({
'attribute' : 'int',
'path' : ArrayType('char', 256)
})