golang
huzhenwei
乐观豁达,好奇心强,业余爱好书法、中国画、文学等,电子信息工程专业,从事IT行业。爱学习,乐于分享。
展开
-
golang cgo将[]byte形式的缓冲区传递给C函数void*参数的办法
golang通过cgo调用C函数时, 常常会遇到从一个无类型buffer(缓冲区)读取数据进行处理的C函数.如果用golang 的bufB := make([]byte, BUFFER_SIZE)创建一个缓冲区, 那么可用unsafe.Pointer(&bufB[0])的方式转换后传递给C函数.示例代码如下:bufByte := make([]byte, BUFFER_SIZE)buffer := unsafe.Pointer(&bufB[0])C.Func(buffer)实例原创 2021-02-16 12:37:46 · 2970 阅读 · 1 评论 -
go mod模式下引用本地包/模块(module)的方法
文章目录样例目录结构建立本地module的方式调用本地module的方式注意事项go mod 的模式, 可以管理包/模块的依赖关系, 从go1.16开始,会自动开启.这个跟GOPATH的模式区别很大, 在引用本地包/模块(module)的时候,我们可以采用本文描述的办法.样例目录结构go└─src ├── audio-websocket │ ├── go.mod │ ├── go.sum │ ├── README.md │ └── main.go原创 2021-01-23 16:52:55 · 15756 阅读 · 6 评论 -
cgo: C的struct转换为go unsafe.Pointer的办法
cgo: C的struct转换为go unsafe.Pointer的办法如果go build时报错:cannot use _cgo5 (type _Ctype_struct__xx) as type unsafe.Pointer in argument.例如C函数中函数声明是int SetUserData(void * userData), 其中userData为一个struct,可用这个办法将C的struct转换为go unsafe.Pointer:var a C.UserDataudata原创 2021-01-23 14:48:42 · 1488 阅读 · 0 评论