zoukankan      html  css  js  c++  java
  • 21.windows库程序(一)

    1.分类

      (1)静态库程序

         运行时不存在,会被链接到可执行文件或动态库中,目标程序的归档。

         文件扩展名:LIB

      (2)动态库程序:

         运行时独立存在,不会被链接到可执行文件或其他动态库中。

         文件扩展名:DLL

    2.静态库程序

      (1)特点

         运行时不存在

         链接到可自行文件或者动态库中

         目标程序的归档

    3.C语言静态库

      (1)使用

         建立一个c文件,可以在文件中使用c库函数,不需要头文件。c编译器只是根据库函数名称,在库中找到对应的函数代码进行链接。

      (2)创建

         建项目

         添加库程序,源文件使用c文件

         库的路径设置

           项目的属性->链接器->输入->附加依赖项中设置库路径

           使用pragma关键字设置,#pragma comment(lib,"..\lib\clib.lib")

      相关代码:

      静态库

    int Clib_add(int a, int b)
    {
        return a + b;
    }
    
    int Clib_sub(int a, int b)
    {
        return a - b;
    }

      使用静态库

    //通知链接器(LINK.EXE)到哪里找源代码
    #pragma comment(lib, "..\lib\T03_Clib.lib")
    
    int main()
    {
        int sum, sub;
        sum = Clib_add(5, 3);
        sub = Clib_sub(5, 3);
        printf("sum=%d, sub=%d
    ", sum, sub);
    
        return 0;
    }

      运行结果:

      

    3.C++语言的静态库

      (1)创建静态库

         建立项目

         添加库程序,源文件使用cpp文件

      (2)导入库

         项目的属性->链接器->输入->附加依赖项中设置库路径

         使用pragma关键字设置

      (3)注意

         在C++环境中使用C静态库,函数原型定义要增加extern "C"

      相关代码:

      静态库

    int CPPlib_add(int a, int b)
    {
        return a + b;
    }
    
    
    int CPPlib_sub(int a, int b)
    {
        return a - b;
    }

      使用静态库

    #include <iostream>
    
    int CPPlib_add(int, int);
    int CPPlib_sub(int, int);
    //以上三句是给编译器看的
    
    //通知链接器到哪里找源代码
    #pragma comment(lib, "../lib/T04_CPPlib.lib")
    
    extern "C" int Clib_add(int, int);
    extern "C" int Clib_sub(int, int);
    #pragma  comment(lib, "../lib/T03_Clib.lib")
    
    
    int main()
    {
        int sum, sub;
        sum = CPPlib_add(5, 4);
        sub = CPPlib_sub(5, 4);
        std::cout << sum << " " << sub << std::endl;
        /*
        为什么C++中必须要有函数声明,C却不需要呢?
        因为C++编译器有两种编译方式:换名、不换名,编译器需要知道是按哪种方式编译,所以要在声明时指明
        而C编译器只有一种编译方式:不换名
        */
        sum = Clib_add(5, 3);
        sub = Clib_sub(5, 3);
        std::cout << sum << " " << sub << std::endl;
        return 0;
    }

      运行结果:

      

  • 相关阅读:
    肯恩·威尔伯:整合灵性途径的几大障碍
    金刚经里面的「应无所住而生其心」,这句话怎么理解?
    成熟是人一辈子的修养,与年龄无关
    杰克·康菲尔德:灵性成熟的十个特质
    杰克·康菲尔德:我是谁?(强烈推荐)
    x11vnc:利用远程机器上的X-Server来进行VNC连接(x11vnc 和 x-server 在不同的机器上)
    Linux ALL:Tigervnc-Server
    Centos 6/Redhat 6:远程图形桌面: tigervnc
    Fedora 31 :远程图形桌面: tigervnc
    win server 2019 :【2个?远程管理用户(单会话?)】升级为远程桌面服务【多用户(多会话)】
  • 原文地址:https://www.cnblogs.com/csqtech/p/5656417.html
Copyright © 2011-2022 走看看