我试图设置使用CGO和Windows C头的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
types的string,但C.CString(title)
正在返回*C.char
我应该如何将string转换为预期的types?
我找到了一个解决方案,你可以将指针转换为*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)) }