首页 > 代码库 > C/C++静态库创建、导出和使用(图文)

C/C++静态库创建、导出和使用(图文)



Windows

 1引入库的原因:

   a.项目的复杂程度大

   b.提高代码的利益利用率

 

 2库的分类

   2.1静态库: *.lib,不能被加载的程序,可以理解为目标程序的归档。

   2.2动态库:*.dll,可以被应用程序加载的程序。

 

二 静态库

 1静态库的特点

1.1目标程序的归档

1.2静态库代码会被嵌入到程序当中

1.3执行时不需要静态库存在

 举例如下:(静态库中代码被嵌于调用printf的代码中

 

 程序      静态库

 printf()  printf(){………}

 

 

 2 C语言静态库

2.1创建静态库(创建win32静态库项目,使用*.c文件.(使用C编译器))

 

2.2添加静态库函数

  直接添加函数,之后编译即可生成*.lib文件。

2.3在程序中将静态库导入

 (1)使用语句:#pragmacomment(lib,"../lib/WinClib.lib")添加静态库

 (2)可在项目属性->链接器->输入->附加依赖项中添加静态库

 

2.4使用静态库提供的函数(C语言程序中,直接使用函数即可)

 

 举例如下:


        extern"C" intC_Add(int nleft, intnright);

                 extern"C" { 

                               intC_Add(int nleft, intnright)

                                       }


    2.5 创建、使用C语言静态库。举例如下(VS2013):

      2.5.1 创建静态库

        (1) 创建静态库项目



       (2) 创建.c文件


      (3) 修改输出*.lib文件目录和文件名(也可不修改,使用时将*.lib文件拷贝到相应目录下即可)

 


            (3) 添加函数,并调试成功



           至此静态库创建完毕



            2.5.2 创建新工程,调用静态库

                            (1)创建调用静态库工程


            (2)添加.c文件


                (3)添加静态库(也可在项目属性中设置,这里不做说明)


         (4)  调用成功



 3 C++语言静态库


3.1创建静态库(创建Win32静态库项目,使用*.cpp文件(使用C++编译器)。)

 

3.2添加静态库函数

 

  直接添加函数,之后编译即可生成*.lib文件。


3.3导入静态库


 (1)使用#pragmacomment(lib,"../lib/Win_Cpp_lib.lib")添加静态库

 (2)可在项目属性->链接器->输入->附加依赖项中添加静态库


3.4定义库函数原型


  int Cpp_Add(int nleft,int nright);


3.5使用库函数


3.6静态库的创建、使用等具体操作

  其创建、使用与C语言静态库有两点差别,其余完全跟 2.5部分相同。

(1)使用#pragma …导入静态库之后,需要再一次定义库函数原型(在调用之前定义即可)

(2)创建.cpp文件编写库函数而不是.c文件(即使用C++编译器而不是C编译器)


3.7注意:

 如果在Cpp文件使用C语言静态库定义的静态库函数原型,也需要再一次在调用C静态库函数之前再次定义要调用函数的原型,定义原型与定义C++静态库函数原型不同需增加 extern “C”.













C/C++静态库创建、导出和使用(图文)