C++ - 文章列表
共 8 页
-
C++程序崩溃报0xC0000005访问冲突的定位方法(dump文件抓取、Windbg与AddressSanitizer排查内存越界)
0xc0000005是访问违例,与0xc0000409栈溢出、0xc0000374堆损坏不是一回事。先用注册表LocalDumps的DumpType设为2让系统落完整转储,或者procdump挂在外面等;编译时带/Zi与/DEBUG保留PDB,再用Windbg的!analyze -v、.ecxr与kv读栈。Debug构建靠_CrtSetDbgFlag与/RTC1提前拦,必要时上/fsanitize=address或者gflags整页堆。
-
报错丢失MSVCP140.dll、VCRUNTIME140.dll与应用程序无法正常启动0xc000007b的解决方法(VC++运行库版本对应、32位与64位混用排查、/MT与/MD)
程序在本机跑得好好的,拷到另一台机器就弹丢失MSVCP140.dll,或者只给一个0xc000007b的框。这类报错多数不是没装运行库,而是架构位数混了或加载顺序出了岔子。文中给出VC++运行库与Visual Studio 2015、2017、2019、2022、2026的版本对应关系,用注册表和文件属性确认装没装,用dumpbin与Dependencies查32位与64位混用,用安装日志看懂0x80070666这类退出码,最后讲清/MT静态链接和CMake侧的配法。
-
Visual Studio编译报错LNK2019无法解析的外部符号的排查与解决方法
VS编译通过却在链接阶段报LNK2019 unresolved external symbol,多半不是语法问题。从undname反解析修饰名入手,逐项排查cpp未加入工程、静态成员只声明没定义、lib未配置、extern "C"缺失、调用约定不一致、模板定义放在cpp、入口函数与子系统不匹配七类原因,并给出dumpbin与/VERBOSE两种定位手段。
-
安装DXSDK_Jun10 报错 Error Code: s1023的解决方法
??在安装DXSDK_Jun10.exe 的时候出现下面错误: Error Code: s1023错误原因:计算机上安装过Microsoft Visual C++ 2010 Redistributable,打开“控制面板”的“程序和功能”,果然计算机里之前有安装“Microsoft Visual C++ 2010 x86 Redistributable - 1010.0.40219”,而DXSDK_Jun安装的是“Microsoft Visual C++ 2010 x86 Redistributable -?1010.0.30319”,版本低于
-
在mfc中使用cef实现webkit的浏览器(四)-自动调整大小
前面的几节我们已经将浏览器显示出来了。在测试中,我们发现了一个问题,就是调整窗口大小的时候,浏览器不会跟着变化大小。需要怎么处理呢?其实很简单,跟其他的控件调整大小一样。添加一个WM_SIZE的消息处理代码如下:void CMFCCefDlg::OnSize(UINT nType, int cx, int cy){ CDialogEx::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 CWnd* cefwindow= FindWindowEx(this->GetSafeHwnd(),NULL,L\"
-
在mfc中使用cef实现webkit的浏览器(一)-准备工作
首先,下载一个cef的开发包,我下载的是?cef_binary_3.2171.1901_windows32 这个版本的。下载完成解压后,用vs打开,编译其中的?libcef_dll_wrapper 这个项目。编译成功后,在\\out\\Debug\\lib 这个目录里会生成一个文件:libcef_dll_wrapper.lib,这个文件在开发我们项目的时候会使用。接下来开始创建我们的项目了。1、打开VS,新建一个mfc的工程,应用程序类型选择“基于对话框”2、将默认生成的对话框里面的控件全部删除3、从cef_binary_3.2171.19
-
在mfc中使用cef实现webkit的浏览器(三)-完成代码
前面,我们添加了一些cefsimple这个示例项目的代码到我们项目中。当然,这些代码需要修改一下,首先是#include 部分#include 的路径需要调整一下,这里是删除\"cefsimple/\"。修改完#include后,编译一下,应该能够通过。接下来,参考一下cefsimple里面“cefsimple_win.cpp”这个文件的代码,这里面的代码是初始化cef的然后添加类似的代码到我们项目中在我们项目的“MFCCef.cpp”这里面的构造函数中,添加如下代码void* sandbox_info = NULL;CefMainArg
-
在mfc中使用cef实现webkit的浏览器(二)-修改项目属性
配置属性-》MFC的使用 设置为"在静态库中使用MFC"VC++目录 包含目录 添加 include 这个目录C/C++ => 预编译头 => 不使用编译头代码生成 => 运行库 => 多线程调试 (/MTd)链接器 => 输入 => 附加依赖项 添加 libcef.lib libcef_dll_wrapper.lib 这两个文件
-
为什么mfc中有些函数的参数列表中没有HWND
比如MoveWindow,SendMessage等这些函数,在vs2012中,提示里面都带有HWND这个参数,如下图:但是实际写的时候却发现并没有这个参数这是因为在mfc中,用的是cwnd的类函数,带有hwnd参数是api下的函数,在函数前加::就可以了
-
mfc CListCtrl 添加图标的方法
CListCtrl 将第一栏设为图标+文本的方法:首先在头文件中声明一个CImageList 的变量(经测试,如果在方法中声明,则不能正常显示图片)CImageList m_StatusImage;然后在类的方法中写if (m_StatusImage.GetSafeHandle()==NULL){ CBitmap Image; BITMAP ImageInfo; Image.LoadBitmap(IDB_BITMAP_