1
我試圖爲一個字符串數組傳遞給使用FFI我的C函數作爲無法傳遞字符串數組內部結構使用FFI
var ffi = require('ffi');
var ref=require('ref');
var ArrayType = require('ref-array');
var Struct = require('ref-struct');
var StringArray = ArrayType('string');
var myStructure=Struct({
'ulonglong' : ref.types.ulonglong,
'charptrptr' : StringArray,
'stringArr' : StringArray
});
var structObjNew=new myStructure();
structObjNew.ulonglong=123456;
structObjNew.charptrptr=["sample","ptrptr"];
structObjNew.stringArr=["sample1","ptrptr1"];
var libfactorial = ffi.Library('./stringArray', {
'readArray': [ 'string', [ myStructurePtr]] //creating header definition
});
var output=libfactorial.readArray(structObjNew.ref());
.C文件爲上述代碼
struct myStructure
{
unsigned long long ulonglong;
char **charptrptr;
char stringArr[3][10];
};
EXPORT char* readArray(struct myStructure *nameofstr) {
printf("Value from first param from structure of type char**\n");
printf("%s\n",nameofstr->charptrptr[0]);
printf("%s\n",nameofstr->charptrptr[1]);
printf("value form second param from structure of thype char[][]\n");
printf("%s\n",nameofstr->stringArr[0]);
printf("%s\n",nameofstr->stringArr[1]);
}
C函數
我正在輸出像:
第一PARAM從
char**
類型的結構中的值樣品:ptrptr
第二PARAM從類型的結構
char[][]
像▲任何垃圾值é┌
即值當我傳遞一個數組到char**
類型,然後我得到一個正確的輸出,但是當我試圖將其傳遞給char*[]
或char[][]
格式在結構內聲明時,我得到一個垃圾值。
但直接傳遞字符串數組像["aa","bb"]
到char*[]
參數在C中工作正常。當我在結構中使用它時,它不適用於我。