各位大神,我在使用 ruby Fiddle 封装一个 C 库时,遇到一个问题。描述如下:
我要封装如下一个函数:
有一个 c source code 定义了结构体 A,还有一函数原型为:struct A* func(char*);
函数中将处理后的多个结果保存在一个一个的结构体中,因此它 malloc 了一块大小为 n*sizeof(A) 的内存,最后它将指向这一大块内存的指针 p 返回 (p 的类型为 A*)。
在 c 中使用时,用类型为 A*的指针遍历这块内存取出每个结构体中的结果数据即可。
我使用了 Fiddle 中的 CStruct 定义了这个结构体 A,用一个变量接收到该函数的返回值,然后将该变量包装为一个 Fiddle::Pointer,现在的问题是,我如何让这个 Fiddle::Pointer 的类型变为 A*?然后读出指针指向内存中的内容。
查了很久,网上关于 Fiddle 的文档和例程很少,Ruby 官方的文档给出的也不详细。希望能有朋友帮忙。