首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用FFI将结构内部的字符串数组传递给C函数

无法使用FFI将结构内部的字符串数组传递给C函数
EN

Stack Overflow用户
提问于 2015-07-03 10:20:47
回答 1查看 1.4K关注 0票数 1

我试图使用FFI将一个字符串数组传递给我的C函数

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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]);
}

我得到的输出如下:

  • char**型结构中第一个参数的值 样品: ptrptr
  • 类型为char[][]的结构的第二个参数的值。 任何垃圾值,如▲é┌

也就是说,当我将一个数组传递给char**类型时,我得到了一个正确的输出,但是当我试图将它传递给在structure中声明的char*[]char[][] format 时,我将得到一个垃圾值。

但是,在C中将字符串数组(如["aa","bb"] )直接传递给char*[]参数很好。当我在结构中使用它时,它对我不起作用。

EN

回答 1

Stack Overflow用户

发布于 2016-08-29 00:05:19

第二个数组的字符大小是固定的。

试试看:

代码语言:javascript
复制
var CharArray10 = ArrayType('char', 10)
var StringArray3 = ArrayType(CharArray10, 3)

var myStructure = Struct({
  'ulonglong' : ref.types.ulonglong,
  'charptrptr' : StringArray,
  'stringArr' : StringArray3
});

更多示例这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31204394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档