最新CEF3无法正确加载URL问题

问题描述:
之前使用CEF3加载网页,按照正常流程,可以直接加载出网页(具体可以参考我的其他关于CEF的文档),现在把原来的代码拿出来编译运行也可以正确加载网页,但是原来的程序库是32位的,现在想编译一个64位版本的,重新下载了CEF3的代码编译,将lib添加到原来的程序代码中,无法正确加载出网页(界面一片空白),我一直以为是CEF3的问题,但是编译CEF3自带的demo后,运行发现可以正常加载出网页,这就很蛋疼了。

问题查找过程
①最开始下载的最新的CEF3代码,以为是最新代码有问题,于是下载和之前32位版本一样的代码编译,同样不能加载网页。
②编译原来32位版本的CEF3代码,按照之前文档上写的流程,发现可以正确加载网页,于是按照同样的方法编译64位版本的CEF3代码,发现不能加载网页。
③以为是MFC框架的问题,开始的代码我是基于MFC对话框写的,发现对话框不能加载网页,而CEF3的WIN32窗口可以加载出网页,于是采用WIN32框架编写,发现32位的没有问题,64位还是无法加载出网页。
④编译运行64位位版本的CEF3的demo代码,把网址替换掉,发现能正确打开对应的网页,这就不得不研究下自己写的demo和CEF3自带的demo有啥区别了。于是打开属性页面,一个一个的对比,修改替换,最后定位到“生成事件”→“生成后事件”,如下所示:
在这里插入图片描述
发现命令行中有东西,开始我只晓得程序需要自动将需要的dll和对应的资源文件复制到运行文件同级目录中(因为之前的代码我是手动复制过来的,所以这个地方我就没有写),但是全部删除后,编译运行发现网页奇迹的加载不出来了,然后将这个命令行全部复制出来分析,最后发现,除了开始的一截代码有点意思外,其他代码就是复制文件,于是将复制文件的代码删除掉,只保留开始的一个setlocal代码,编译运行发现,网页能正常显示。

问题解决
项目属性→生成事件→生成后事件→命令行,里面添加如下代码:

setlocal
mt.exe -nologo -manifest "xx.exe.manifest" "compatibility.manifest" -outputresource:"../x64/Debug/xx.exe";#1
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd

其中“xx.exe.manifest”是从CEF3的demo代码中复制过来的,我把名字改了,“xx.exe”是你的工程生成的exe的名字,具体为啥要这样做,据说是系统兼容性问题(这也难怪,32位程序不需要设置这个,64位系统就需要设置这个)。具体原因可以参考:https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/targeting-your-application-at-windows-8-1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值