我正在使用github.com/google/gousb
包来获取有关连接到机器的USB设备的信息,但是当我调用函数gousb.NewContext()
时,什么也没发生,并且代码似乎什么也没做超过那一点。
我看到了一个类似但不完全相同的问题:
can't load package: package .: no buildable Go source files
对于上述类似问题,我检查了GOPATH
并确保没有空包
我也在github上问过,但他们无济于事,因为问题出在我的构建环境中,而不是gousb本身
我可以很好地获取gousb回购协议,并且一切似乎都在工作,intellisense提出建议等等。
但是当我实际运行程序时,它冻结在gousb.NewContext()
上,我使用断点对其进行了跟踪,发现问题是由libusb.go
文件中的下面一行引起的。
if err := fromErrNo(C.libusb_init(&ctx)); err != nil { return nil, err }
特别是
C.libusb_init(&ctx)
当我“进入”上面的那一行时,在VSCode上使用调试器,它转到一个名为_cgo_gotypes.go
的文件中,并且在文件中显示:
Could not load source '_cgo_gotypes.go'.
,并且在调试控制台中显示:
go list failed on .: can't load package: package .: no Go files in C:\Users\TOJ\AppData\Local\Programs\Microsoft VS Code
我绝对不知道发生了什么,如果有人可以阐明一些想法,我将不胜感激。
这是我去的环境:
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\TOJ\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Work\Important\[REPO-NAME]
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\TOJ\AppData\Local\Temp\go-build424489806=/tmp/go-build -gno-record-gcc-switches
我希望不会引发任何错误,并且希望返回*gousb.Context
类型