如何在libffi中指定double*类型?
如何在libffi中指定double*类型?
嗨,这个问题其实libffi官方文档里已经给出明确答案啦!
你现在的困惑是:想用libffi动态调用函数时,需要指定double*(指向double的指针)类型的参数,但只看到了ffi_type_double(对应基础的double值类型)和ffi_type_pointer(对应通用指针类型),不知道怎么组合出这种复合指针类型。
其实根本不需要特意构建什么复合类型——直接用ffi_type_pointer就可以搞定!
libffi的设计逻辑是:所有指针类型,不管它指向的具体是什么数据类型,统一都用ffi_type_pointer来表示。举个简单的例子:如果你要调用的目标函数是void process_double(double* input),那在构建libffi的参数类型数组时,对应的位置直接填&ffi_type_pointer就好;而传递参数值的时候,把你要传入的double变量的地址(比如&my_double_var)作为参数传入即可。
正如@user20716902在评论里提到的,FFI文档明确说明:"You should use this [ffi_type_pointer] for all pointers, regardless of their real type"
备注:内容来源于stack exchange,提问作者Dmitry Kabanov
相关产品推荐
相关产品推荐

