C++
yangxi_001
这个作者很懒,什么都没留下…
展开
-
C++应用程序在Windows下的编译、链接:第二部分COFF/PE文件结构
2.1概述在windows操作系统下,可执行文件的存储格式是PE格式;在Linux操作系统下,可执行文件的存储格式的WLF格式。它们都是COFF格式文件的变种,都是从COFF格式的文件演化而来的。在windows平台下,目标文件(.obj),静态库文件(.lib)使用COFF格式存储;而可执行文件(.exe),动态链接库文件(.dll)使用PE格式存储。静态库文件其实就是一堆目标文转载 2016-11-17 16:43:17 · 930 阅读 · 1 评论 -
C++应用程序在Windows下的编译、链接:第三部分 静态链接(一)
大家好,下面开始静态链接部分的工作原理分析,由于这部分内容太多了,我计划分2个部分发出,先看下这部分的大纲:3静态链接3.1概述编译器的任务是将每一个包含C++代码的源文件编译成包含二进制机器码的目标文件。由于在一个源文件中可能会调用到其它文件中的代码或数据,这些代码或者数据可能来自于静态库中,也可能来自于动态链接库中,也可能来自于其他的源文件中。在编译阶段,编译器转载 2016-11-17 16:44:34 · 439 阅读 · 0 评论 -
C++应用程序在Windows下的编译、链接:第三部分 静态链接(二)
3.5.2动态链接库的创建3.5.2.1动态链接库的创建流程动态链接库的创建流程如下图所示: 在系统设计阶段,主要的设计内容包括:类结构的设计以及功能类之间的关系,动态链接库的接口。在动态链接库中,包含两类函数:一类是内部函数,一类是外部函数。内部函数只能在动态链接库的内部使用,不能被动态链接库以外的模块调用;外部函数是该动态链接库的接口,可以被外部模块调用。转载 2016-11-17 16:45:38 · 1247 阅读 · 0 评论 -
C++应用程序在Windows下的编译、链接(四)动态链接
4动态链接4.1概述在静态链接阶段,链接器为PE文件生成了导入表,导出表,符号表,并调整了Call指令后面的操作数,在程序调用的时候,能够直接地或者间接地定位到IAT中的某个位置,在PE文件中,该位置包含符号的名称,当PE文件加载到内存以后,该位置应该修正为符号的地址。这些已有的信息和已经完成的工作是后续动态链接的基础。动态链接的任务是:在程序的加载或者运行阶段,执行各个模转载 2016-11-17 16:48:11 · 357 阅读 · 0 评论 -
C++编译链接的那些小事 .
最近,有同事向我多次问及C++关于编译链接方面的问题,包括如下:1:什么样的函数以及变量可以定义在头文件中2:extern "C"的作用3:防止重复包含的宏的作用4:函数之间是怎么链接起来的我认为,这些问题不难,书上基本上都有,但要是没有真正思考过,就凭死记硬背,也就是只能“嘴上说说”而已,遇到问题还真棘手,所以我觉得有必要说一下。C/C++的编译链接过程其实,转载 2016-11-17 18:31:50 · 396 阅读 · 0 评论 -
C/C++定义全局变量/常量几种方法的区别
在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的话,那么你可能非常的转载 2016-11-17 19:06:58 · 431 阅读 · 0 评论