使用cgo将字符串传递给win32函数

使用cgo将字符串传递给win32函数,go,cgo,Go,Cgo,我试试这个 name := C.CString("vds") C.OpenService(scm, (name), C.DWORD(C.SC_MANAGER_ALL_ACCESS)) 但它不会编译 .\test.go:28: cannot use name (type *C.char) as type *C.CHAR in argument to _Cfunc_OpenService 我试图寻找类似的东西(例如sqlite),但它们似乎使用了相同的习惯用法,但它编译了尝试显式转换它: nam

我试试这个

name := C.CString("vds")
C.OpenService(scm, (name), C.DWORD(C.SC_MANAGER_ALL_ACCESS))
但它不会编译

.\test.go:28: cannot use name (type *C.char) as type *C.CHAR in argument to _Cfunc_OpenService

我试图寻找类似的东西(例如sqlite),但它们似乎使用了相同的习惯用法,但它编译了

尝试显式转换它:

name := C.CString("vds")
C.OpenService(scm, (*C.CHAR)(unsafe.Pointer(name)), C>DWORD(C.SC_MANAGER_ALL_ACCESS))