概述
`Cgo`允许 Go 程序调用 C 库或其他暴露了 C 接口的库。正是如此,这也成为 Go 程序员工具箱的重要组成部分。
使用`Cgo`可能会比较棘手,特别是在 Go 和 C 代码中传递指针和回调函数时。
这篇文章讨论了一个端到端当例子,包含了如下几方面:
* `Cgo`的基本使用,包括链接一个传统的 C 库到 Go 二进制文件中。
* 从 Go 语言中传递 struct 到 C 语言中。
* 传递 Go 函数到 C 程序中,并安排 C 程序在随后调用它们。
* 安全的传递任意的 Go 数据到 C 代码中,这些 C 代码后续会回传这些数据到它所调用的 Go 回调中。
本文并不是一个`Cgo`的使用教程-在阅读前,需要你对它对简单使用案例有所熟悉。
在本文最后列了一些有用的`Cgo`使用教程和相关的文章。这个案例的全部源代码详见[Github](https://github.com/eliben/code-for-blog/tree/master/2019/cgo-callback)。
## 问题所在-一个C库调用多个Go回调程序
如下是一个虚构的C库的头文件,该库处理(输入)数据,并基于事件调用回调函数。
```c
typedef void (*StartCallbackFn)(void* user_data, int i);
typedef void (*EndCallbackFn)(void* user_data, int a, int b);
typedef struct {
StartCallbackFn start;
EndCallbackFn en
最后
以上就是长情乌龟为你收集整理的cgo 结构体指针_传递回调函数和指针到 Cgo的全部内容,希望文章能够帮你解决cgo 结构体指针_传递回调函数和指针到 Cgo所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复