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

标签 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),但他们似乎使用相同的习惯用法,但它编译

最佳答案

尝试显式转换它:

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

关于go - 使用 cgo 将字符串传递给 win32 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567028/

相关文章:

go - Go 中的查找表?

ffmpeg - 管道 HTTP 响应

go - Robotgo无法收听多个事件

go - 在 Golang 项目中正确包含 C 库(按源代码)

c - 如何从 Go 函数返回 C 指针?

go - 为什么我不能使用 CGO 链接到包文件夹中的这个 DLL?

c++ - 如何将 C++ 库与 CGO 和 Swig 链接起来?

去 GORM db.Automigrate

json - 如何解码包含整数、 float 和数字字符串的 JSON?

go - CGO 库构建到 JS WASM 文件