上面的程序在退出时,会崩溃(Release模式不会崩溃)。

接下来把libcef.dll.pdb解压到我们的程序目录,调试运行,看一下崩溃点。

调试发现崩溃在:

libcef.dll!`anonymous namespace'::CefShutdownChecker::~CefShutdownChecker()


这是网上文章中使用较多的关闭流程,但在Debug模式下仍然会在退出后崩溃。

bool MyCefClient::DoClose(CefRefPtr<CefBrowser> browser)
{
    base::AutoLock lock_scope(lock_);
    browser_ = NULL;
 
    // 返回false之后,主窗口会再次收到WM_CLOSE
    return  false;
}
 
void CHelloCefDlg::OnClose()
{
    CefRefPtr<CefBrowser> browser = handler->GetBrowser();
    if (browser != NULL)
    {
        // 此时触发DoClose
        // 但会导致OnBeforeClose不执行
        browser->GetHost()->CloseBrowser(false);
        return;
    }
 
    CDialogEx::OnClose();
}

因此,我们以后就只使用Release版本吧(暂时)。


本文链接地址: LibCef的使用6-退出时崩溃的问题
https://blog.qingfengju.com/index.asp?id=433

上一篇: LibCef的使用5-所有链接在同一窗口打开
下一篇: LibCef的使用7-执行/调用JS

分类:Win32/C++ 查看次数:669 发布时间:2020/5/6 8:00:52