如何使用inline-c来包装将指针返回到自定义结构类型的函数?

麦克熊·霍尔顿

我计划使用inline-c包装C函数:

lxw_workbook  *workbook  = workbook_new("filename.xlsx");

我需要捕获返回的Ptr,以便以后在其他函数中使用。

问题:Ptr指向lxw_workbook,这是一个自定义结构。我是否需要为此Haskell类型编写一个存储实例?因为如果我不直接使用该结构,而仅使用Ptr,可以跳过此步骤吗?

高温超净水

type参数Ptr只是一个标记,以提醒您它所指向的内容。类型不需要是Storable或其他任何东西。请注意,您的情况并不新颖;C标准库包含像FILE这样的类型,这些类型只能像您一样通过指针访问。跟随他们的带领,您可以编写一个虚拟类型

data Workbook = Workbook -- constructor does not have to/should not be exported

然后您可以编写一个Context包含该类型的:

import qualified Data.Map as M
import qualified Language.C.Inline.Context as C
import qualified Language.C.Inline.Types as C

lxwContext :: C.Context
lxwContext = mempty { ctxTypesTable = M.singleton (C.TypeName "lxw_workbook") [t| Workbook |] }

然后可以照常加载

import qualified Language.Inline.C as C

C.context (baseCtx <> lxwContext)

C.include "whatever.h" -- wherever you get workbook_new from

example :: IO (Ptr Workbook)
example = [C.exp| lxw_workbook* { workbook_new("filename.xlsx") } ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

如何调用从Python获取并返回自定义类型指针的delphi函数?

来自分类Dev

如何定义自定义对象文字的函数返回类型

来自分类Dev

STL中使用的C ++自定义比较类型(函数谓词与较少结构)

来自分类Dev

如何使用自定义错误枚举来修复不匹配的返回类型?

来自分类Dev

如何将返回指针从C ++ dll函数返回到C#

来自分类Dev

Django使用自定义SQL而不是模型将JSON对象返回到模板

来自分类Dev

如何调用已保存在自定义结构向量中的成员函数指针?

来自分类Dev

如何在c中使用自定义类型从节点列表中读取数据结构

来自分类Dev

使用指针将字符和浮点值从 scanf 返回到主函数 C

来自分类Dev

使用“ id”作为自定义“ init”方法的返回类型而不是指向该类的指针的优缺点?

来自分类Dev

C / C ++:使用类型定义的函数指针来*声明*一个函数

来自分类Dev

如何从C的PyObject类型的函数将值从C返回到python?

来自分类Dev

如何将LRESULT转换为自定义结构类型?

来自分类Dev

如何在Swift中将自定义类型作为返回函数?

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

在C#中使用cpp代码(返回自定义结构和std:string)

来自分类Dev

如何使用C#接口将C ++智能指针返回到PowerPoint接口

来自分类Dev

您如何调整xmlrpclib来解释自定义类型?

来自分类Dev

如何在Simulink中将具有数组的结构赋予自定义C代码函数?

来自分类Dev

如何使用C ++代码调用Matlab自定义函数

来自分类Dev

如何将自定义数据发送到paypal并使用post将其返回到返回URL中?

来自分类Dev

向量中自定义结构函数的内存使用

来自分类Dev

如何使用自定义类型malloc()?

来自分类Dev

如何在不使用C语言中使用typedef的情况下声明将指针返回到返回函数指针的函数的函数?

来自分类Dev

使用具有自定义类型的Generic.List作为函数的返回类型不起作用

来自分类Dev

如何在C用户定义函数中返回“结构”数据类型?

来自分类Dev

在Cython中包装自定义类型C ++指针

Related 相关文章

  1. 1

    C语言如何将指针从函数返回到指针

  2. 2

    如何调用从Python获取并返回自定义类型指针的delphi函数?

  3. 3

    如何定义自定义对象文字的函数返回类型

  4. 4

    STL中使用的C ++自定义比较类型(函数谓词与较少结构)

  5. 5

    如何使用自定义错误枚举来修复不匹配的返回类型?

  6. 6

    如何将返回指针从C ++ dll函数返回到C#

  7. 7

    Django使用自定义SQL而不是模型将JSON对象返回到模板

  8. 8

    如何调用已保存在自定义结构向量中的成员函数指针?

  9. 9

    如何在c中使用自定义类型从节点列表中读取数据结构

  10. 10

    使用指针将字符和浮点值从 scanf 返回到主函数 C

  11. 11

    使用“ id”作为自定义“ init”方法的返回类型而不是指向该类的指针的优缺点?

  12. 12

    C / C ++:使用类型定义的函数指针来*声明*一个函数

  13. 13

    如何从C的PyObject类型的函数将值从C返回到python?

  14. 14

    如何将LRESULT转换为自定义结构类型?

  15. 15

    如何在Swift中将自定义类型作为返回函数?

  16. 16

    使用BOOST.python从C ++将结构返回到Python

  17. 17

    使用BOOST.python从C ++将结构返回到Python

  18. 18

    在C#中使用cpp代码(返回自定义结构和std:string)

  19. 19

    如何使用C#接口将C ++智能指针返回到PowerPoint接口

  20. 20

    您如何调整xmlrpclib来解释自定义类型?

  21. 21

    如何在Simulink中将具有数组的结构赋予自定义C代码函数?

  22. 22

    如何使用C ++代码调用Matlab自定义函数

  23. 23

    如何将自定义数据发送到paypal并使用post将其返回到返回URL中?

  24. 24

    向量中自定义结构函数的内存使用

  25. 25

    如何使用自定义类型malloc()?

  26. 26

    如何在不使用C语言中使用typedef的情况下声明将指针返回到返回函数指针的函数的函数?

  27. 27

    使用具有自定义类型的Generic.List作为函数的返回类型不起作用

  28. 28

    如何在C用户定义函数中返回“结构”数据类型?

  29. 29

    在Cython中包装自定义类型C ++指针

热门标签

归档