1
我使用Node.js ffi插件來調用C++ DLL。用Node.js調用包含char數組的struct C++ dll
我遇到的問題是與我提供的結構 - 它包含一個字符數組 - 我不相信我設置正確。 因此我無法訪問這些內容。從C++頭文件
常規的定義:
int GetSysConfig(MyConfig * config);
的的myconfig結構是以C++中定義如下:
typedef struct{
int attribute;
char path[256];
}MyConfig;
我的對應的Node.js結構定義:
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
})
注意:下面是我稱之爲t的地方他從Node.js的DLL - 我不認爲這裏有問題,雖然我可能是錯的。
// Create a pointer to the config - we know we expect to supply this to the C++ routine.
var myConfigPtr = ref.refType(MyConfig);
var lib = ffi.Library('my.dll', {
"GetSysConfig": ["int", [myConfigPtr]]
});
var myConfigObj = new MyConfig();
lib.GetSysConfig.async(myConfigObj.ref(), function(err, res) {
console.log("attribute: " + myConfigObj.attribute);
// This is always empty [] - when it shouldn't be.
console.log("path: " + JSON.Stringify(myConfigObj.path));
});
有沒有人知道我在哪裏出錯了?