1、按照github go-face大佬的教程,
按照要求,配置了dblib环境,我的环境变量里也配了:
go get go-face源码到GOPATH/src/github.com/Kagami/goface
vscode中新建main.go,将test代码粘贴到main.go中,
go run main.go,运行的时候报错了:
1)找不到标识符
这个问题,属于cgo的环境配置问题,只需要在环境变量里,把cgo环境enable打开就好了。
go env -w CGO_ENABLED=1,
2)ld.exe 链接库找不到的问题
本以为找不到标识符的问题解决了,就能正常编译通过了,如下的这个问题更是让我头大,
为什么要依赖这几个库?最开始以为gcc环境有问题,走了很多弯路,都没解决,静下心来看go-face代码,发现在cgo编译的时候,是有加这个依赖的,代码在下面截图:最上面哪一行cgo CFLAGS:是我加的,没什么用,纯粹测试。主要就是cgo LDFLAGS 里面的-lblas,-lcblas
-llapack,这里面依赖了这几个库
我face.go源码里去掉这几个库,编译会报错:
那是不是这几个库没安装上呢,想到这,就应该想到MSYS了,快去查看pacman的命令。查询安装module的命令,pacman -Ss +module name就能查到相关的安装包,
我先查的是blas,发现相关的就一个openblas,适配windows的系统以及描述的内容还算接近,先安装他,试试
如果走到这一步,你尝试过了,就会发现,go run main.go还是没用,依旧是找不到链接库,有点崩溃了,不知道怎么解决了,荒废了半天+1亿脑细胞,
我又试着查找了一下lapack的包,
这里面的lapack很周正,可以直接安装它
再回到vscode,去执行go run main.go的时候,你就会发现,能正常编译通过了!!!
有几个注意的地方:
1)cgo,这个项目是go依赖的c++,看他的代码有import C,所以就要把CGO的开关打开
2)环境配置,我查了好久的资料都没找到相关的问题,可能大家都是在linux上编译的吧,还是要针对报错去定位问题。
希望能帮助到遇到同类错误的朋友。