随笔分类 - C++ VC++
摘要:看得懂的知识,要仔细看; 看不懂的知识,要硬着头皮看. 真正用到这些知识的时候. 才发现自己掌握的很不扎实. 了解, 理解, 记住, 熟练, 精通, 这个过程可能需要对一个知识或者一个知识体系进行反复的运用和思考. 我觉得对知识理解的越深刻、完整, 记忆才会更持久, 使用起来才更熟练. 所以个人认为多角度的理解问题是关键. 下面记录下我最近遇到的一些问题, 方便日后查看, 后面可能会更新:D.这里...
阅读全文
摘要:1. 用到的dynamic CRT版本问题, 通过manifest文件不能很好的分析出来的话,可以通过winSxS以及事件浏览器分析SxS问题. 可以使用dependency walker和ProcessMon工具跟踪程序启动过程发现问题. SxS错误在WindowsXP和Windows7下的出错提示是不一样的, 但都可以利用利用事件浏览器诊断SideBySide错误. 2. 一个可执行...
阅读全文
摘要:cstdint.h 是负责不同平台下的int转化。今天遇到的这个问题,暂时解决办法是换用boost 1_39_0 或 boost 1_40_0,估计是boost的一个bug。
阅读全文
摘要:vc8以后的运行时部署有两种方式:shared assembiles 和 private assembiles. 当我们的exe(dll)包含的manifest文件对应的vc runtime版本只有一个时使用private assembiles较为方便,当runtime版本为一个新版本和至少一个旧版本(这里只的是同一个dll的版本)推荐使用shared assembiles。他们都是基于Micrsoft vc runtime side by side(SxS),也就是为了避免dll的版本冲突造成程序运行的不确定性。他们的解决办法是在每个exe(dll)中内嵌(或者附带)一个标记所需运行时版本.
阅读全文
摘要:"No-one normally bothers to understand what is that is does exactly, until strange or funny things start happening. " DllMain我们都不会陌生,让我们先看看MS怎么说的MSDN。 哦,仅仅如此么?《Windows核心编程(第5版)》有比较稍微详细的介绍,我整理了下: 根据fdwReason参数,有四种情况DllMain函数会被调用。1.DLL_PROCESS_ATTACH: 系统第一次将一个DLL映射到进程地址空间时。执行进程相关的初始化工作。 每个DL
阅读全文
摘要:1.链接过程:程序加载->重定位->符号解析2.连接器输入:目标文件、库、命令文件连接器输出:可执行文件、加载映射信息、调试器符号3.obj文件结构:段(segments)、符号表(symbol table)链接器第一遍扫描obj文件,创建一个列出输入文件中的所有段的段表和包含所有导入导出符号的符号表。确定输出文件布局。第二遍扫描负责重定位,和动态链接时,运行时链接器解析动态符号所需信息。当链接器处理完所有obj文件之后,如果还存在未解析的improted name他就会查找库,将输出这些未解析名字的库连接起来。(静态链接)
阅读全文
摘要:问题1——环境设置问题1.确认是在debug模式下运行2.确认正确的项目设置:链接器->调试->生成调试信息(是), C++->常规->调试信息格式(/Zi or /Z7)问题2——当前代码与当前执行的程序不匹配1.确认运行的是最新生成的代码:不是在运行中编辑的2.当进行dll调试的时候确保加载的是代码对应的dll,可以通过设置项目依赖项或自定义生成避免这个问题如果上面的都没有问题,尝试重新启动VS
阅读全文
摘要:转载自http://hi.baidu.com/xin_jing/home一、 static 变量static变量大致分为三种用法1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用.3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象1. 静态局部变量静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。(2)允许对
阅读全文
摘要:如果C++程序在链接时,不能在所有的库和目标文件内找到所引用的函数、变量或标识符,将产生此错误。一般来说,发生错误的原因是所引用的函数、变量不存在、拼写不正确或者使用错误。下面,我以工程内链接和连接库链接两种方式讨论错误出现的原因和解决错误的方法。一,工程内链接1,工程内函数或变量不存在 1,只声明没定义。 2,声明和定义的函数参数列表不一致。 3,函数或变量拼写错误。2,函数或变量所在的文件没有被正确编译 1,所在的文件没有被添加到工程中。 2,函数或变量的定义放在头文件,但是该头文件并没有被任何一个cpp文件引用,注意:这种情况只会出现入口函数的链接错误。 4,预处理宏或条件编译导致函数或
阅读全文
摘要:隐式类型转换是C++一个很不安全的特性,经常给调试程序制造麻烦.一个避免int和指针间隐式类型转换的技巧是使用const int, 因为没有pointer 到 const int 的implicit cast ,当然经常需要配合使用const_cast<T>()和multiable.
阅读全文
摘要:再次遇到fatal error LNK1103 这个常见的错误,花了很长时间才找到解决方案。记下最后解决办法,希望对其他人有所帮助(SMILE)。症状:xxx.lib(xxx.obj)fatal error LNK1103: debugging information corrupt; recompile module OS: Win7/Vista SDK:VS2005 sp1解决办法: 1. 管理员身份运行VS2005 2. 下载补丁for VS2005 sp1https://connect.microsoft.com/VisualStudio/Downloads/DownloadDeta.
阅读全文
摘要:给C++初学者的50个忠告(转载自www.ieee.org.cn)1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言; 5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点; 6.会用Visual C+
阅读全文
浙公网安备 33010602011771号