Golang CGO无法使用转换的字符串
我正在尝试使用CGO和Windows c标题设置Windows命令提示符的标题:Golang CGO无法使用转换的字符串,c,windows,go,c-strings,cgo,C,Windows,Go,C Strings,Cgo,我正在尝试使用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) } 似乎C.SetConsoleTitle(ctitl
// #include <windows.h>
import "C"
import "unsafe"
func Title(title string) {
ctitle := C.CString(title)
defer C.free(unsafe.Pointer(ctitle))
C.SetConsoleTitle(ctitle)
}
似乎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))
}
/#包括
输入“C”
进口“不安全”
func标题(标题字符串){
ctitle:=不安全的指针(C.CString(标题))
延迟C.free(ctitle)
C.SetConsoleTitle((*C.CHAR)(ctitle))
}
尝试将C.SetConsoleTitle(ctitle)
更改为C.SetConsoleTitle(title.C_str())
@LPs,这似乎不可能title.C_str未定义(类型字符串没有字段或方法C_str)
谢谢:)
// #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))
}