存档

文章标签 ‘Visual Studio’

MSVC CRT运行库启动代码分析

2013年9月14日 没有评论

在程序进入main/WinMain函数之前,需要先进行C运行库的初始化操作,通过在Visual Studio中调试,通过栈回溯可以找到位于crt0.c中的_tmainCRTStartup函数,这个函数负责进行一些初始化操作,_tmainCRTStartup的上一层调用来自kernel32.dll。这里简单分析一下crt0.c的代码。
实际上,C运行库代码又有两个版本,如果是静态编译的话代码位于crt0.c之中,如果是动态编译的话代码位于crtexe.c之中,这里可以通过项目属性的“配置属性”——[......]

继续阅读

Chrome源码编译

2013年8月31日 16 条评论

还是在四月份的时候,一时心血来潮下载下来了Chrome的代码打算随便看看,当时候确实看了几天,不过后来因为一些其他事情就放下了,最近无聊了很久,终于还是决定继续看看。虽然编译没什么技术含量,不过体验一下还是不错,主要是环境的搭建,另外是体验一下大工程的编译时间。
一、环境简介
软件(包):7Zip、Visual Studio 2010、Visual Studio 2010 SP1补丁、Windows 8 SDK、June 2010 DirectX SDK等。
操作系统:Windows 7 x64[......]

继续阅读

DLL调试 之 当前不会命中断点,还没有为该文档加载任何符号

2013年4月5日 没有评论

最近在Visual Studio中调试DLL的时候,老是提示“当前不会命中断点,还没有为该文档加载任何符号”,在写代码写到快要发疯的时候遇到这样的事情,还有比这更糟糕的么?
网上那些乱七八糟的解决方案全然无效,比如删除工程目录下ncb文件之类的,或者配置选项确保生成调试符号之类的,都不是我想要的。后来,是这么解决问题的(其实以前就这么玩过,只是记得不太清楚了):
1. 需要自己弄一个Loader(比如自己写个EXE),这个Loader可以加载要调试的DLL;
2. 在DLL需要下断点的地方加一个[......]

继续阅读

Boost编译与配置

2013年1月21日 6 条评论

老文章,在草稿箱存了一年多了)Boost是一个开源、可移植的强大的C++程序库,由C++标准委员会库工作组成员发起。官方网址为http://www.boost.org,SourceForge网址为http://sourceforge.net/projects/boost/。本文以Windows下Visual Studio为例讲解如何编译和配置Boost库。
首先从SourceForge上下载Boost库的压缩包,此时的最新版为1.47.0,下载地址为http://nchc.dl.sourcef[......]

继续阅读

分类: C++编程 标签: ,

VS2008 SP1 MFC程序在Windows 2000下提示找不到gdiplus.dll

2012年4月20日 没有评论

用Visual Studio 2008 SP1写了一个MFC程序,拿到Windows 2000下运行的时候提示找不到gdiplus.dll,这个程序确实不需要gdiplus.dll,但在导入表中确实有gdiplus.dll。就是SP1的补丁搞的鬼。

微软在Visual Studio 2008 SP1补丁发布时特地说明不要gdiplus.dll MFC程序也可以在2000下运行(Bugs fixed in MFC in Visual Studio 2008 SP1):

Running MFC applications on Windows 2000 (with or without GDIPlus.dll) is supported.
在CodeGuru上的一个帖子MFC and GDI+ problem上找到了解决方案:
把CProjectNameApp的基类从CWinAppEx改为CWinApp就行了,是要改动三处:

头文件ProjectName.h中类的定义:class CProjectNameApp : public CWinApp[......]

Visual Studio调试小技巧

2011年11月22日 2 条评论

记得《Windows核心编程》一书的开头部分讲到了Visual Studio中一个查看错误消息的小技巧,前几天调试程序想用一下,可一时记不起来是什么参数了,所以去网上找了下,发现还有其他小技巧,就顺便记下来,方便以后忘记的时候快速查找。

一、错误代码
不需要GetLastError()之后格式化成数字写Log,然后用Error Lookup查询;或者直接调用API查询对应语言版本的错误信息。在监视窗口中写下$err,hr即可看到详细的错误描述信息,跟Error Lookup一样的效果。[......]

Microsoft Increment Linker已停止工作解决方案

2011年10月17日 3 条评论

在Windows 7下安装Visual Studio 2008,写SDK程序时链接器经常出问题,如果程序里面包含了资源,则出问题的几率就更大了。一般是Debug版本在链接时提示“Microsoft Increment Linker已停止工作”,如图所示。
不管是不是以管理员身份运行Visual Studio 2008,这样的问题都会出现;网上找了一下,有一个临时性的解决方案:打开项目的“属性”对话框,单击“链接器”选项,单击“常规”属性页,修改“启用增量链接”属性为“否(/INCREMENTAL[......]

继续阅读

分类: Windows SDK 标签: ,

一款资源编辑器——Resource Editor

2011年3月6日 没有评论

首先,VC6的以及Visual Studio的资源编辑器都是强大的。并且是微软的产品,自然可以很好的适用于微软的Windows应用程序开发。但是对于Win32 SDK以及MASM就不行了。
VC6生成的资源里面带有大量的头文件,还有很多很多乱七八糟的语句,一旦拿到SDK下或者MASM下就会出错,你需要小心的清理一下资源代码才可以用。而且清理过后,那个rc文件就不能再用VC或者VS打开了。
对于VS更是可恨,干脆就不能把资源保存为rc文件,让人彻底死心。据说Borland有一个资源编辑器,不过说很[......]

继续阅读

分类: Win32 ASM 标签: , ,