编译:
编译(compilation , compile) 1、利用编译程序从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。
链接:
链接是指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。链接也称超级链接,是指从一个网页指向一个目标的连接关系,所指向的目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是图片、电子邮件地址、文件、甚至是应用程序。
按照链接路径的不同,网页中超链接一般分为以下3种类型:内部链接,锚点链接和外部链接.
如果按照使用对象的不同,网页中的链接又可以分为:文本超链接,图像超链接,E-mail链接,锚点链接,多媒体文件链接,空链接等.
动态链接库:
动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。Windows下动态库为.dll后缀,在linux在为.so后缀。
cmake 作用是进行编译和工程项目的配置,并不进行真正的编译环节。第一次点击config时,配置编译器,选择的vs2013,采用vs2013进行编译。最终生成工程文件,如.sln 文件,所有生成文件在路径build中,如下:
通过vs进行编译,生成文件如下 :
编译输出:
Lib文件
.lib是一种文件名后缀,该文件为Windows操作系统中的库文件,相当于Linux中的·a或·o、.so文件
lib有静态lib和动态lib之分。
lib文件通过编译才可以使用,编译分静态与动态之分。
静态编译
静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序
折叠动态编译
动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持
详细说明
lib文件是不对外公开的,不能查看一个编译过后的文件
有几个选择:
1。如果你查看有同名的dll文件,可以通过vc自带的depends查看dll接口
2。通过msdn看你使用的该lib包含的函数名,来查找其对应的头文件,头文件里面有整个lib的函数声明(可能不全)
3。查看vc或者其他工具安装目录下的src目录,查看函数的代码
lib文件是二进制文件,所以要查看它的内容,只能反汇编。
用编程语言,打开lib文件的办法有三个:
1、在object/library modules使用全路径名;
2、把*.lib放在VC的Lib目录中
3、修改project setting的Link->Input中的Addtional library path,加入你的目录。
LIB文件是库文件(与DLL文件相类似),供其它程序调用的,直接打不开。
折叠内容
Obj文件:
程序编译时生成的中间代码文件,目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。
程序编译时生成的中间代码文件
目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。
OBJ只给出了程序的相对地址,而可执行文件是绝对地址。
3D中的OBJ文件格式详解
OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导,也可以通过Maya读写。比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过其中很多需要通过插件才能实现。
OBJ文件是一种文本文件,可以直接用写字板打开进行查看和编辑修改。另外,有一种与此相关二进制文件格式(*.MOD),其作为专利未公开,因此这里不作讨论。