vs2017编译QCefView

环境:win10,vs2017,qt5.14.2,cmake4.0.0

1.前言

QCefView依赖CefViewCore,CefViewCore依赖cef

QCefView源码地址:https://github.com/CefView/QCefView

CefViewCore源码地址:https://github.com/CefView/CefViewCore

查看cef各个版本需要的编译环境的地址:https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md

cef各个版本的下载地址:https://cef-builds.spotifycdn.com/index.html

2.添加环境变量

新建环境变量QTDIR,值为qt目录,例如D:\Qt\Qt5.14.2\5.14.2\msvc2017_64,可以用refreshenv或者重启电脑刷新环境变量

3.下载代码

cef91以上的不支持vs2017,故选择【91.0.4472.164】版本

https://cef-builds.spotifycdn.com/cef_binary_91.1.23%2Bg04c8d56%2Bchromium-91.0.4472.164_windows64_client.tar.bz2https://cef-builds.spotifycdn.com/cef_binary_91.1.23%2Bg04c8d56%2Bchromium-91.0.4472.164_windows64.tar.bz2https://cef-builds.spotifycdn.com/cef_binary_91.1.23%2Bg04c8d56%2Bchromium-91.0.4472.164_windows64_client.tar.bz2

QCefView选择QCefView-v1.0.7版本,https://codeload.github.com/CefView/QCefView/tar.gz/refs/tags/v1.0.7

CefViewCore选择20230219版本,https://codeload.github.com/CefView/CefViewCore/zip/04338332c5467d64f3a6a4f3062720d214448726

解压QCefView-1.0.7.tar.gz

解压CefViewCore-04338332c5467d64f3a6a4f3062720d214448726(20230219).zip,并将解压后文件夹改名为CefViewCore,覆盖QCefView-1.0.7内空CefViewCore文件夹

拷贝cef_binary_91.1.23+g04c8d56+chromium-91.0.4472.164_windows64.tar.bz2至QCefView-1.0.7\CefViewCore\dep目录

修改CefViewCore文件夹下的CefConfig.cmake文件,将原来CEF_SDK_VERSION指向的版本的注释掉,新增行91.1.23+g04c8d56+chromium-91.0.4472.164

4.编译

回到QCefView-1.0.7目录,在cmd里执行generate-win-x86_64.bat,生成.build目录及QCefView.sln文件

用vs2017打开QCefView.sln,遇到一些编译错误如下

1>------ 已启动生成: 项目: CefViewCore, 配置: Debug x64 ------
1>CefViewBrowserClient.cpp
1>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\CefViewCore\src\CefView\CefBrowserApp\CefViewBrowserClient.cpp(60): error C2039: “tolower”: 不是“std”的成员
1>d:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\unordered_set(19): note: 参见“std”的声明
1>已完成生成项目“CefViewCore.vcxproj”的操作 - 失败。
2>------ 已启动生成: 项目: QCefView, 配置: Debug x64 ------
2>	Automatic MOC for target QCefView
2>mocs_compilation_Debug.cpp
2>QCefViewPrivate.cpp
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\src\details\QCefViewPrivate.cpp(407): error C2039: “reset”: 不是“scoped_refptr<CefRunContextMenuCallback>”的成员
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\CefViewCore\dep\cef_binary_91.1.23+g04c8d56+chromium-91.0.4472.164_windows64\include/base/cef_ref_counted.h(291): note: 参见“scoped_refptr<CefRunContextMenuCallback>”的声明
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\src\details\QCefViewPrivate.cpp(422): error C2039: “reset”: 不是“scoped_refptr<CefRunContextMenuCallback>”的成员
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\CefViewCore\dep\cef_binary_91.1.23+g04c8d56+chromium-91.0.4472.164_windows64\include/base/cef_ref_counted.h(291): note: 参见“scoped_refptr<CefRunContextMenuCallback>”的声明
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\src\details\QCefViewPrivate.cpp(518): error C2039: “reset”: 不是“scoped_refptr<CefRunContextMenuCallback>”的成员
2>D:\Users\Administrator\Downloads\cef3\QCefView-1.0.7\CefViewCore\dep\cef_binary_91.1.23+g04c8d56+chromium-91.0.4472.164_windows64\include/base/cef_ref_counted.h(291): note: 参见“scoped_refptr<CefRunContextMenuCallback>”的声明
2>正在生成代码...

 解决方法如下:

  std::transform(
    lower_url.begin(), lower_url.end(), lower_url.begin(), [](unsigned char c) { return std::tolower(c); });
==>
  std::transform(
    lower_url.begin(), lower_url.end(), lower_url.begin(), [](unsigned char c) { return tolower(c); });

 osr.contextMenuCallback_.reset();
==>
 osr.contextMenuCallback_ = nullptr;

参考:https://www.cnblogs.com/IntelligencePointer/p/18443703

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值