自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 vs2017调试MFC源码与dll版本不匹配

经过一番折腾终于找到了原因:同时安装了vs2017、vs2022,结果加载的mfc140ud.dll不是vs2017的,而是vs2022的,主版本号虽然都是14,但小版本号不同。我先安装的vs2017,后安装的vs2022,于是vs2022把vs2017的dll给覆盖了!如上图,使用VS2017调试MFC源码,提示源码与dll不匹配。无语了,都是人才啊!总不能每回都用vs2022来调试吧。

2024-06-27 09:33:39 320

原创 3D Slicer使用与体绘制

3D Slicer默认不进行体绘制,右上角的三维重建窗口只显示一个空的立方体框。在体绘制设置窗口中,选择进行体绘制的DICOM序列,然后将体绘制开关打开(眼睛标志)

2023-11-23 10:31:26 670 2

原创 自制内存泄漏检测工具

自制的内存泄漏检测工具

2022-05-25 16:04:25 401

原创 CRT内存检测

除了VLD(Visual Leak Detector)、Dr.Memory这些第三方检测工具之外,还可以用vs自带的CRT内存泄漏检测工具来检测内存泄漏。对于MFC工程来说尤其方便,甚至都不需要再手动添加代码,Debug模式下自动开启了CRT检测。怎么使用我就不废话了,直接去看官方文档:使用 CRT 库查找内存泄漏 - Visual Studio (Windows) | Microsoft Docs值得一提的是,它不仅能用于检测内存泄漏,还能用来检测内存越界。原理对于MFC工程.

2022-04-25 17:57:15 1058 2

原创 怎么查看dll和lib的运行库是MD还是MT

查看运行库是MD还是MT:dumpbin.exe /directives参考:判断dll是md还是mdd_Lay_Nobody的博客-CSDN博客lib运行库是MDlib运行库是MDd对照表:

2022-04-21 11:05:24 2358 2

原创 zlib缺少部分导出函数

因为项目需要,我需要重新编译zlib的静态库,结果编译出来发现跟项目里原有的zlib静态库相比少了几个函数。编译zlib的时候发现它没有在源码中声明导出函数,我编译出来的lib少了几个函数,各种百度无果,查阅MSDN发现,原来dll/lib导出函数有4种方法:最常用的就是通过_declspec(dllexport)关键字导出,而zlib使用的是第2种方式:.DEF文件导出。下面是zlib 1.2.11的.DEF文件(只截图了一部分):而我缺少的就是这几个函数:奇怪的是,.

2022-04-21 11:01:14 180

原创 sprintf_s报错野指针

今天遇到一个奇怪的问题,sprintf_s格式化字符串报错:看起来像是野指针或数组越界,但仔细阅读代码后,未发现野指针或数组越界。经过排查,发现居然就是sprintf_s造成的。把出错的代码简化之后,大概就是这样:改正后的代码:这段代码的作用就是把一些16进制数转成一个字符串,一开始也没发现代码有什么问题,查阅MSDN,sprintf_s的函数声明:参考MSDN的例子发现一个问题,sprintf_s的第2个参数填的有问题,既然填充字符的位置向右偏移,那么buf..

2022-04-19 14:29:07 799 2

原创 编译DICOMscope 3.5.1

最近遇到一些关于DICOM图像的疑问,想要找些开源代码参考一下,于是找到了DICOMscope,这是一个开源的DICOM Viewer,是DCMTK开发团队所提供的一个示例,用C++和JAVA编写的。官网有提供源码和编译好的二进制包,我需要对着源码调试,所以就自行编译了一个版本。编译过程中遇到了一些问题,这里做一下记录。一开始不确定官方用的vc++是哪个版本,就用了vs2005,结果编译过程中报错多的我怀疑人生,虽然都是一些很容易解决的报错,但数量太多了,改了一上午还没改完,无奈只能放弃了。改用vc6,

2021-12-20 15:29:50 393

原创 vs2005+Windows XP 编译OpenSSL 0.9.6a

一开始用的是vs2012 + Windows 10,但是编译报错,无奈之下只能在xp虚拟机里编译,vc6和vs2005都试了,最后还是用了vs2005。vc6编译的时候会报错,大致意思就是不识别long long类型,我不想改代码,也改不了,所以最后还是用的vs2005。使用vs2005虽然也有一些报错,但是陆续都解决了,附上编译好的动态库。链接:https://pan.baidu.com/s/1mInCD7oqg4ex6m5-HNbGgA提取码:ubq7编译步骤编译步骤其实很少,不算..

2021-12-16 13:43:26 659

原创 OpenSSL 0.9.6a版本编译不过(未解决)

今天在编译一个开源项目时,发现它用到了OpenSSL 0.9.6a版本,下载下来发现只有代码没有二进制文件,只能自行编译。编译过程中,报错:我查了一下这个报错,发现应该是vs2012定义的宏跟OpenSSL定义的宏重名了。搜索解决办法,发现网上基本都是拷贝粘贴的同一个答案,就是注释掉vs的头文件里同名的宏,反正我觉得这办法挺扯的,没敢用。偶然搜到了一个用到了OpenSSL的其他开源项目,用的应该也是低版本OpenSSL,遇到了同样的问题,不知道解决了没有。下面是链接。RE: Errno

2021-12-15 15:17:40 213

原创 CArray析构崩溃问题

今天遇到一个CArray 作为类成员析构崩溃的问题,百思不得其解,后来查了半天,才发现问题出在CArray压根就不拷贝内存,这点跟标准库的容器不一样,需要注意。

2021-08-05 11:49:13 572

原创 MFC状态栏之RepositionBars

CStatusBar、 CToolBar、 CDialogBar、 CDockBar这几个类都继承自CControlBar,而RepositionBars() 就是CControlBar的一个方法。void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver, UINT nFlag = reposDefault, LPRECT lpRectParam = NULL, LPCRECT lpR

2021-07-23 14:35:55 1022

原创 MFC之CStatusBar文字不显示

记录一下使用CStatusBar遇到的问题,这问题太蠢了,先上代码://系统默认的几个项,即使不手动设置也会显示文字static UINT indicators[] ={ ID_SEPARATOR, // status line indicator ID_INDICATOR_OVR, ID_INDICATOR_CAPS, ID_INDICATOR_NUM,}; m_pStatusBar = new CMyStatusBar(); if(!m_pStatusBa

2021-07-22 18:04:42 500

原创 jQuery之Deffered对象的使用

Deferred一开始以为jQuery的defered就是基于原生js的Promise的一层封装,后来简单看了一下源码,发现好像并非如此。 Deferred的实现比Promise要早 可以看到jQuery是从1.5版本开始支持Deferred,而1.5版本是2011年发布的。而原生js的Promise,是在chrome 32版本以后才有的,ie甚至就一直都不支持;chrome 32版本是在2014年发布的结论:jQuery.Deffered是独立于原生js...

2021-07-05 18:38:55 433

原创 c++ string compare函数

例如:

2020-11-06 10:16:20 1915

原创 对于‘’此转储文件的格式无效‘’的一种猜测

打开dump,提示‘’此转储文件的格式无效‘’;于是,用查看16进制的工具看了一下文件内容,文件头是有内容的,文件大小也有几百M,这个就很奇怪了;后来问了下客户,客户反馈说出现dump弹框的时候电脑很卡,怀疑是内存不足,如果是在内存不足的情况下写dump,那么可能会写到一半写失败了,所以文件损坏了,其实应该是没写完,这只是我个人的猜测,没有经过验证。...

2020-11-03 11:21:33 1305 2

原创 2020-09-07

执行create.bat失败,报错如下:【分析1】报错的主要内容其实就一条:assertvc_lib_um_path;这句python脚本的意思大概就是vc_lib_um_path的值为空,这个里面应该是有值的; 看了一下出错脚本setup_toolchain.py的代码,看不出什么问题,直接拿vscode调试一下,神奇的地方来了,竟然发现运行是通过的,vc_lib_um_path也有值:C:\Program Files (x86)\Windows Kits\10\lib\10.0....

2020-09-07 17:47:25 199

原创 MFC使用SetWindowLong修改CListBox样式不生效

今天遇到一个需求,需要动态修改CListBox的窗口样式,结果发现按MSDN的说明去修改,竟然没生效。按理说这是不可能的,MSDN还是比较靠谱的,后来发现MSDN关于SetWindowLong函数的说明底下提了一下:Certain window data is cached, so changes you make usingSetWindowLongwill not take eff...

2020-02-20 16:38:04 602

原创 产生std::bad_alloc异常的一种特殊情况

今天碰到了一个关于std::bad_alloc异常的比较特别的情况,特此记录一下:调试代码的过程中,突然抛出std::bad_alloc异常,查看堆栈,全都是运行时库和windows库的堆栈,看不出什么有用信息;幸运的是,这个问题比较好复现,经过多次复现和打断点,发现问题出在一个消息处理函数里;最终定位,出问题的代码如下:char* p = new char[lDataLen];...

2019-07-31 13:57:40 8578

原创 fopen以共享模式打开文件

今天碰到要将mfc代码翻译成纯windows c++代码的情况,被打开文件函数给难住了,特此记录一下。先看看见过的打开文件的几种方式:mfc的CFile封装了windows API:CreateFile,这个函数好用但是只能在windows下用; c++标准库:fstream,不太会用,有的帖子说这个对象在操作Unicode文本时会遇到困难,因时间原因先不做研究; c标准库:fope...

2019-07-16 09:24:59 3289

原创 vmware 两台虚拟机(windows)之间ping不通 + 虚拟机ping不通主机部分情况

这里只说我遇到的情况。虚拟机ping不通主机(未验证):https://blog.csdn.net/u013292493/article/details/64541055,因为我在按照这个文章修改规则之前,没测试虚拟机能不能ping通主机,所以不知道这个有没有用,姑且记下来;主机ping不通虚拟机:先说明,这个一定要有个桥接模式的网卡才行,我死心了,因为是在公司服务器上,没敢乱动;两台...

2018-11-05 17:18:44 8103 2

原创 OpenCASCADE && VS2010 SP1编译

所需材料:opencascade-7.3.0-vc10-64.exe (从官网下载) VS2010 SP1下载:下载地址:https://www.opencascade.com/content/latest-release 上面的地址显然是最新的版本下载地址,我没找到历史版本的下载位置,下载下来就是opencascade-7.3.0-vc10-64.exe ;材料说明:网上各种...

2018-10-14 20:51:02 1024 1

原创 LoadLibrary 报错:Entry Point Not Found

使用LoadLibrary 时,加载失败,调试器弹框中断,报错:Entry Point Not Found; 拿dll的代码跟调,发现连dllmain都没进,用老版本的dll可以加载上,新版本就不行,然后各种百度,有人说是像是某个隐式链接的dll与lib的版本不对。但是我的lib都是重新生成的,还不行。最后没办法了,各种瞎找资料,在看一个英文网站上偶然有了点思路:https://ofe...

2018-07-31 09:44:39 10028 2

原创 exe为什么可以在不同机器上运行

 1,很多资料都说,exe文件是二进制码(指令),是可以直接被机器执行的;2,但是,所谓的二进制码(指令)不是因机而异的吗?不同的机器,使用的cpu是不一样的,指令集也不一样,那为什么在一台机器上生成的exe可以在别的不同指令集上的cpu上运行?3,在我看来,这个所谓的指令,恐怕指的并不是对应硬件的指令,而是对应操作系统的指令吧!恐怕这些资料都在这一点上混淆了!4,我的一个猜测是,生成...

2016-11-20 15:21:26 1025 1

原创 VC2008无法加载ocx文件,提示没有权限

昨天为了一些原因要向VC工程加载一个ocx文件:第一次不成功,先是提示我注册ocx需要管理员权限;注册ocx文件成功后,从注册表加载ocx文件时,又提醒我没有权限;我又切换到管理员账号,还是不行,勉强加载上了,头文件也是空白的,这可奇了怪了?怎么回事?今天早上我再看,发现居然是工程中的源文件居然是只读的,不可修改,原来问题出在这里!我把整个文件夹的只读属性去掉后,终于加载成功了

2016-09-21 08:51:23 622

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除