gpt4 book ai didi

c - 从 Go 中读取 C 类型的字符串

转载 作者:IT王子 更新时间:2023-10-29 02:17:40 24 4
gpt4 key购买 nike

我正在尝试用 Go 编写一个简单的 OpenGL 应用程序,并想从驱动程序中读取 OpenGL 版本。我正在使用这个功能:

http://godoc.org/github.com/chsc/gogl/gl21#GetString

这是一个包装函数

const GLubyte* glGetString( GLenum name);

这段代码:

fmt.Println(gl.GetString(gl.RENDERER))
fmt.Println(*gl.GetString(gl.VERSION))

输出

0x4708ae0
50

输出可能是一个 C 类型的字符串,指向字符串第一个字节的指针。如何将 GetString 函数的输出转换为普通的 go 字符串?



解决方案:

包提供了正确的转换器功能,只是不是很明显:

fmt.Println( gl.GoStringUb( gl.GetString( gl.RENDERER )))


一般方法:(如果包不提供 *Ubyte 到字符串的转换函数)

pointer := unsafe.Pointer(gl.GetString(gl.RENDERER))
str := C.GoString( (*C.char)(pointer) )
fmt.Println(str)

最佳答案

您链接的包提供了一个函数 GoStringUb 来完成这个任务:

render := gl.GoStringUb(gl.GetString(gl.RENDERER))
version := gl.GoStringUb(gl.GetString(gl.VERSION))

关于c - 从 Go 中读取 C 类型的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com