go - 调用需要 sockaddr 的 C 函数

标签 go cgo

我有一个带有 sockaddr 指针的 C 函数。

我创建了一个 syscall.RawSockaddrInet4 对象,但我无法弄清楚如何将该对象的地址转换为 C.sockaddr 指针。

我已经尝试过这个,(*syscall.RawSockaddr)(unsafe.Pointer(&sa)),但出现错误:

无法在 _Cfunc_lib_connect 的参数中使用 (*syscall.RawSockaddr)(unsafe.Pointer(&sa)) (类型 *syscall.RawSockaddr)作为类型 *C.struct_sockaddr

任何想法将不胜感激!

int lib_connect( int sock, 枚举 lib_sock_type 类型, const struct sockaddr* srv, int srv_sz);

最佳答案

谢谢 mkopriva!

(*C.struct_sockaddr)(unsafe.Pointer(&sa))

关于go - 调用需要 sockaddr 的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47243350/

相关文章:

go - Confluence kafka go 软件包与 ubuntu 22.04 兼容吗?

go - 反射设置作为 interface{} 传入的结构体字段

go - 如何实现fasthttp框架

c - Golang 中有 c FILE 的数据类型吗?

Go Fyne 项目无法从 Linux 交叉编译到 Windows

go - 如何将错误消息从 C 传递给 Go?

go - GoLang 对由结构和嵌入式结构实现的接口(interface)的类型转换是如何工作的

golang 静态停止 index.html 重定向

reflection - 将 reflect.Value 从字符串转换为 int

macos - 为较旧的 Mac OS 版本构建 golang 应用程序的正确方法是什么?