2016-02-23 50 views
0

我試試這個傳遞字符串Win32函數與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爲例),但他們似乎使用相同的成語,但它編譯

回答

0

儘量明確地澆鑄:

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