Go语言WebView项目编译报错:EventToken.h文件缺失及includePath配置问题求助
嘿,我之前折腾webview_go的时候也碰到过几乎一模一样的报错,给你几个亲测有效的排查和解决方向,你可以挨个试试:
首先得搞懂这个报错的根源:WebView2.h里用到了EventToken.h,这个头文件属于Windows Runtime的系统头文件,咱们用的MinGW默认没把它的路径加入搜索列表,再加上webview_go自带的WebView2头文件路径可能没被IDE或编译器识别,就触发了这个提示。
第一步:先找到系统里的
EventToken.h在哪里
这个文件一般藏在Windows Kits的目录里,比如我电脑上的路径是C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt,你可以在C盘搜索EventToken.h,找到你自己电脑上的准确路径,版本号(比如10.0.22621.0)会根据你的Windows系统版本不同而变化。第二步:给VS Code的语法检查配置includePath
报错里提到的“squiggles are disabled”是VS Code的C/C++插件提示的,咱们得把缺失的头文件路径添进去:- 打开VS Code的设置(快捷键Ctrl+,)
- 搜索
C_Cpp: Include Path,点击「编辑 in settings.json」 - 把刚才找到的Windows Kits的winrt路径,还有webview_go里WebView2头文件的路径加进去,比如:
"C_Cpp.default.includePath": [ "${workspaceFolder}/**", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/winrt", "${GOPATH}/pkg/mod/github.com/webview/webview_go@v0.0.0-20240831120633-6173450d4dd6/libs/mswebview2/include" ]
保存之后,IDE的红色波浪线应该就会消失了。
第三步:编译时给CGO指定头文件路径
有时候IDE的语法检查没问题了,但编译还是报错,这时候得在go build的时候通过CGO_CFLAGS告诉编译器去哪找头文件,比如:CGO_CFLAGS="-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/winrt -I${GOPATH}/pkg/mod/github.com/webview/webview_go@v0.0.0-20240831120633-6173450d4dd6/libs/mswebview2/include" go build记得把路径里的版本号换成你自己找到的那个,
${GOPATH}如果你的环境变量没配置,就换成你本地的GOPATH绝对路径,比如C:/Users/myuser/go。额外小提示:检查MinGW版本
你用的tdm64-1的GCC 10.3.0其实没问题,但如果上面的方法都不管用,可以试试换成MinGW-w64的最新稳定版,它对Windows系统头文件的支持会更完善一些。
内容来源于stack exchange

