c编译动态库和静态库流程

编写:

创建一个新项目,右键解决方案--->添加--->新建项目

c编译动态库和静态库流程_第1张图片
库.png

空选项--->下一步

c编译动态库和静态库流程_第2张图片
库2.png

输入名字和路径---->创建

右键项目名--->新建项--->新建一个.h头文件和.c源文件

c编译动态库和静态库流程_第3张图片
项目.png

c编译动态库和静态库流程_第4张图片
项目2.png

编写头文件和源文件

静态编译头文件

#pragma once
//方便c++调用
#ifdef __cplusplus
extern "C" {
#endif
//正常函数写法即可
    int add(int a, int b);


#ifdef __cplusplus
}
#endif

动态编译头文件

#pragma once
//方便c++调用
#ifdef __cplusplus
extern "C" {
#endif
//内部函数就是正常写法,外部不可调用
    //外部函数(导出函数)的格式  普通函数前面加上_declspec(dllexport)
    __declspec(dllexport)int myAdd(int a,int b) ;

#ifdef __cplusplus
}
#endif

源文件

源文件不会写就去学c语言

右键项目名--->属性--->配置属性--->常规--->修改配置类型为静态库(.lib)

c编译动态库和静态库流程_第5张图片
库0001.png
c编译动态库和静态库流程_第6张图片
库001.png
  • 编译生成新的解决方案,静态编译在Debug文件夹下会得到.lib文件,将该.lib文件和相应头文件给用户,用户就可以使用该库的函数.
  • 动态库会生成.lib和.dll文件.
  • 静态库会生成.lib文件,里面放的是函数实现
  • 动态库会生成.lib和.dll文件,.lib放的是那些函数是导出的,.dll放的是代码的实现

导入

新建一个项目,右键项目名--->在资源文件管理器中打开文件夹--->把.lib和头文件复制进去

c编译动态库和静态库流程_第7张图片
导入01.png

右键项目名--->添加--->现有项--->选择复制进的文件(箭头下一个)

c编译动态库和静态库流程_第8张图片
项目.png

最后:

静态编译导入头文件就可以使用里面的函数了,

动态编译导入头文件之后还要加上一句话。

#pragma comment(lib,"./testDll.lib")//双引号里面是文件的相对路径,修改你的库名即可

你可能感兴趣的:(c编译动态库和静态库流程)