• windows静态库的使用


    最近在学Zeromq(像框架一样的一个socket library)的使用,里面有关于库的使用问题。今天就来复习下静态库的使用:

    使用静态库是重用代码的一种绝佳方式。您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。

     

    Missoft msdn library参考:http://msdn.microsoft.com/zh-cn/library/ms235627(v=vs.90).aspx

    参考文章:http://hi.baidu.com/schsun/item/fafcd31b528716c539cb308d

    (一).静态库的创建步骤:

      1.选择“Win32 控制台应用程序”.

      2.选择“应用程序类型”下的“静态库".

      3.清除“附加选项”下的“预编译头”复选框。

     
      4.添加一个头文件:MathFuncsLib.h
    // MathFuncsLib.h
    #ifndef _MATCH_H
    #define _MATCH_H
    
    namespace MathFuncs
    {
    	class MyMathFuncs
    	{
    	public:
    		// Returns a + b
    		static double Add(double a, double b);
    
    		// Returns a - b
    		static double Subtract(double a, double b);
    
    		// Returns a * b
    		static double Multiply(double a, double b);
    
    		// Returns a / b
    		// Throws DivideByZeroException if b is 0
    		static double Divide(double a, double b);
    	};
    }
    
    #endif
    

      5.添加一个源文件:MathFuncsLib.cpp

    // MathFuncsLib.cpp
    
    #include "MyExecRefsLib.h"
    #include "MathFuncsLib.h"
    #include <stdexcept>
    
    using namespace std;
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            if (b == 0)
            {
                throw new invalid_argument("b cannot be zero!");
            }
    
            return a / b;
        }
    }

      6.编译这个工程就,在工程所在文件夹的Debug文件夹中生成.lib文件,这个文件就是一个静态库。

      使用静态库我们需要这个 “*.lib"文件和刚刚的".h"文件。

    (二).静态库的使用。
      1.还是创建“Win32 控制台应用程序”(其他也可以,举个例子而已)。
      2.把".lib"文件和".h"文件复制到新项目的目录。
      3.把“.h"文件添加进去。右击头文件/添加/现有项:
     
      4.添加一个源文件:
     1 #include <iostream>
     2 
     3 #include "MyExecRefsLib.h"
     4 #pragma comment( lib, "..\staticLib\MyExecRefsLib.lib" )     //加载静态库
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     double a = 7.4;
    10     int b = 99;
    11 
    12     cout << "a + b = " <<
    13         MathFuncs::MyMathFuncs::Add(a, b) << endl;
    14     cout << "a - b = " <<
    15         MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
    16     cout << "a * b = " <<
    17         MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
    18     cout << "a / b = " <<
    19         MathFuncs::MyMathFuncs::Divide(a, b) << endl;
    20 
    21     return 0;
    22 }    

      5.编译,生成

      

      以上就是静态库的基本使用步骤,记录下来,以防自己忘掉。

      注:其实

      #pragma comment( lib, "..\staticLib\MyExecRefsLib.lib" )     //加载静态库   

        这个代码可以去掉,改为手动在 项目/**属性 中设置

        1."VC++ 目录" 的 "库目录"  加上刚刚的 ".lib"文件所在目录.

        2."连接器"       的 "输入"   的 “附近依赖项” 加上 库的文件名 "*.lib".

  • 相关阅读:
    Spring Boot笔记
    Mybatis笔记
    SpringBoot学习笔记(6)Mybatis整合
    SpringBoot学习笔记(5)Druid连接池
    Authentication plugin 'caching_sha2_password' cannot be loaded的解决方案
    docker笔记
    SpringBoot学习笔记(2)配置文件
    SpringBoot学习笔记(1)入门
    Java中IoC、AOP、Bean、PO、VO、DTO、EJB、POJO等常见概念简述
    用MySQL实现微博关注关系的方案分析(转)
  • 原文地址:https://www.cnblogs.com/sixbeauty/p/3638060.html
Copyright © 2020-2023  润新知