我正在尝试使用CGO和Windows c header 设置Windows命令提示符的标题:
// #include <windows.h>
import "C"
import "unsafe"
func Title(title string) {
ctitle := C.CString(title)
defer C.free(unsafe.Pointer(ctitle))
C.SetConsoleTitle(ctitle)
}
但是在编译时,会发生以下错误:
cannot use ctitle (type *C.char) as type *C.CHAR in argument to _Cfunc_SetConsoleTitle
似乎
C.SetConsoleTitle(ctitle)
期望使用*C.CHAR
类型的字符串,但C.CString(title)
返回*C.char
我应该如何将字符串转换为期望的类型?
最佳答案
我找到了一个解决方案,您可以将指针转换为*C.CHAR
:
// #include <windows.h>
import "C"
import "unsafe"
func Title(title string) {
ctitle := unsafe.Pointer(C.CString(title))
defer C.free(ctitle)
C.SetConsoleTitle((*C.CHAR)(ctitle))
}