在预处理期会进行替换,将头文件和宏定义进行替换
编译期会将源代码变为汇编语言
汇编期是把汇编语言变为机器语言 .obj文件/.o文件(windows下是 .obj文件linux是.o文件)
连接期是把所有的.obj文件/.o文件和程序中引用的动态库和静态库连接到一起生成可执行文件
(1) .a文件
(2).lib文件
(1).so文件(linus中.so文件用的比较多)
(2).dll文件(windows中用的是.dll文件)
直接拷贝到可执行文件中
动态库在使用的过程中还需要有一个索引(同名字,但不同文件类型,索引文件是.lib文件)
把索引拷贝到可执行文件中
1.静态库会造成空间浪费
2.静态库对程序的更新、部署和发布页会带来麻烦。如果静态库更新了,那么所有使用它的应用程序都需要重新编译、发布给用户
代码如下
// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
int add(int a, int b);
#endif //PCH_H
// pch.cpp: 与预编译标头对应的源文件
#include "pch.h"
int add(int a, int b) {
return a + b;
}
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
1.绝对路径:在windows里面,从盘符开始的路径就是绝对路径
例如:F:\vs\jingtaiku\x64\Debug\jingtaiku.lib
2.相对路径:从任意位置开始,./(表示当前路径)或者…/(表示上一层路径)
将pch.h这个头文件放到当前项目所在的文件夹,如下
先在当前文件夹中创建一个用来放头文件的文件夹
再将pch.h这个头文件放到此文件夹中
然后还要将framework.h这个头文件放入到此文件夹中,因为在pch.h头文件中用到了framework.h这个头文件
最后进行包含头文件代码的书写,整体代码如下
#include
#include"./tou/pch.h"//包含头文件
using namespace std;
int main() {
int c = add(2, 4);
cout << "2 + 4 = "<
先在当前文件夹中创建一个存放库的文件夹再把静态库放到此文件夹中
(1)创建一个存放库的文件夹
(2)把静态库放到此文件夹中
然后进行导入依赖库代码的书写,整体代码如下
#include
#include"./tou/pch.h"//包含头文件
using namespace std;
#pragma comment(lib/*第一个变量是固定的lib*/,"./ku/jingtaiku.lib"/*第二个变量是引用的那个库的路径(这是个相对路径相对于当前文件夹的路径)*/)//导入依赖库
int main() {
int c = add(2, 4);
cout << "2 + 4 = "<
代码如下
// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
//添加导出(添加导出之后才能在索引里找到这个函数的实现)
_declspec(dllexport) int add(int a, int b);
//没添加导出的话就找不到这个函数的实现
int sub(int a, int b);
#endif //PCH_H
// pch.cpp: 与预编译标头对应的源文件
#include "pch.h"
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
将pch.h这个头文件放到当前项目所在的文件夹,如下
先在当前文件夹中创建一个用来放头文件的文件夹
再将pch.h这个头文件放到此文件夹中
然后还要将framework.h这个头文件放入到此文件夹中,因为在pch.h头文件中用到了framework.h这个头文件
先在当前文件夹中创建一个存放库(此时存放的是索引文件)的文件夹再把动态库的索引放到此文件夹中
(1)创建一个存放库的文件夹(此时存放的是索引文件)
(2)把动态库的索引放到此文件夹中
然后进行导入依赖库代码的书写,整体代码如下
#include
#include"dlltou/pch.h"
using namespace std;
#pragma comment(lib,"./dllku/dongtai_Dll1.lib")
int main() {
int c = add(2, 4);
cout << "2 + 4 = "<