最近在学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

  1. // MathFuncsLib.h
  2. #ifndef _MATCH_H
  3. #define _MATCH_H
  4.  
  5. namespace MathFuncs
  6. {
  7. class MyMathFuncs
  8. {
  9. public:
  10. // Returns a + b
  11. static double Add(double a, double b);
  12.  
  13. // Returns a - b
  14. static double Subtract(double a, double b);
  15.  
  16. // Returns a * b
  17. static double Multiply(double a, double b);
  18.  
  19. // Returns a / b
  20. // Throws DivideByZeroException if b is 0
  21. static double Divide(double a, double b);
  22. };
  23. }
  24.  
  25. #endif

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

  1. // MathFuncsLib.cpp
  2.  
  3. #include "MyExecRefsLib.h"
  4. #include "MathFuncsLib.h"
  5. #include <stdexcept>
  6.  
  7. using namespace std;
  8.  
  9. namespace MathFuncs
  10. {
  11. double MyMathFuncs::Add(double a, double b)
  12. {
  13. return a + b;
  14. }
  15.  
  16. double MyMathFuncs::Subtract(double a, double b)
  17. {
  18. return a - b;
  19. }
  20.  
  21. double MyMathFuncs::Multiply(double a, double b)
  22. {
  23. return a * b;
  24. }
  25.  
  26. double MyMathFuncs::Divide(double a, double b)
  27. {
  28. if (b == )
  29. {
  30. throw new invalid_argument("b cannot be zero!");
  31. }
  32.  
  33. return a / b;
  34. }
  35. }

  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 = ;
  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 ;
  22. }

  5.编译,生成

  

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

  注:其实

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

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

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

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

windows静态库的使用的更多相关文章

  1. Windows静态库和动态库的创建和使用

    偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件.然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DL ...

  2. Windows静态库和动态库的创建和使用(VS2005)

    偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件.然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DL ...

  3. 【转】分析Linux和windows动态库

    原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...

  4. Linux和windows动态库

    转载:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中 ...

  5. C++静态库和动态库

    静态库与动态库 首先简单介绍一下gcc 指令 ubuntu 下安装gcc g++ 方法 sudo apt install gcc g++ gcc 的简单使用 建立hello.c 源文件 gcc hel ...

  6. c/c++:动态库 静态库 linux/windows 例子 (转)

    作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静 ...

  7. 在Windows 环境下编译Qt静态库(QT5.32)

    参考链接 Qt5.3 Tools and Versions MinGW ICU ActivePerl Qt 安装MinGW工具链环境 这里在Win32环境下要安装一个MinGW工具链,这里最好是先安装 ...

  8. 创建和使用Windows静态链接库

    首先明确这篇文章的目的,我希望大家能够通过这篇文章了解一下如何在实际工作中创建和使用Windows平台下的静态链接库.关于链接库的概念,希望大家参考维基百科"Library"词条( ...

  9. C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)

    1. 首先,如何制作一个静态库(lib)? 额, 对于静态库,我们知道,里头是不应该有Main函数,它只是一个配合文件.之所以称之为lib静态库,其实就是指,我们需要用到lib里头的函数时,我们才会去 ...

随机推荐

  1. Akka概念集

    (转)http://www.csdn.net/article/2014-12-17/2823174 在Akka里面,和Actor通信的唯一方式就是通过ActorRef.ActorRef代表Actor的 ...

  2. 我的mini_c语言文法设计

    //这个文件主要是用来描述当前源语言的词法结构和语法结构 //当前语言是c语言的一个子集,因此里面所有的描述大家都很熟悉 //注意,当前语言并不支持预处理,因为c预处理比较复杂,而且楼主能力低下,因此 ...

  3. Cocos2d-x中如何增加图片和文本菜单

    菜单都以MenuItem开头 MenuItemLabel - 文本菜单项 MenuItemImage - 图片菜单项 // on "init" you need to initia ...

  4. ant Table td 溢出隐藏(省略号)

    1.创建组件 components/LineWrap/index.js /** * td 溢出隐藏 组件 */ import React, { PureComponent } from 'react' ...

  5. jquery下载保存文件

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. odoo8.0下selection_add的使用

    在odoo中有selection类型的字段,用于限定字段的值在某些范围之内,在view上面显示此字段时,会显示一个下拉的列表. 如果是自己新定义的字段,这个列表的内容可以自己定义,但如果是继承自某个对 ...

  7. Android Exception 10(server)' ~ Channel is unrecoverably broken and will be disposed!)

    08-11 19:22:35.028: W/MemoryDealer(2123): madvise(0x43e16000, 12288, MADV_REMOVE) returned Operation ...

  8. JDBC 使用SimpleJdbcTemplate实现Dao

    public interface UserDao {     public void addUser(User user);     public User getUser(int userId); ...

  9. hibernate 一对多关联

    package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistenc ...

  10. 在ubuntu上使用Virtual-Box安装Mininet

    使用Virtual-Box安装Mininet看上去简单,但其中也暗藏许多坑.我自己装了多次Mininet,但每次都有缺陷: mininet访问不了网络 用宿主机访问不了mininet虚拟机 最后,终于 ...