最近在学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 == )
{
throw new invalid_argument("b cannot be zero!");
} return a / b;
}
}

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

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

(二).静态库的使用。
  1.还是创建“Win32 控制台应用程序”(其他也可以,举个例子而已)。
  2.把".lib"文件和".h"文件复制到新项目的目录。
  3.把“.h"文件添加进去。右击头文件/添加/现有项:
 
  4.添加一个源文件:
 #include <iostream>

 #include "MyExecRefsLib.h"
#pragma comment( lib, "..\\staticLib\\MyExecRefsLib.lib" ) //加载静态库
using namespace std; int main()
{
double a = 7.4;
int b = ; cout << "a + b = " <<
MathFuncs::MyMathFuncs::Add(a, b) << endl;
cout << "a - b = " <<
MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
cout << "a * b = " <<
MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
cout << "a / b = " <<
MathFuncs::MyMathFuncs::Divide(a, b) << endl; return ;
}

  5.编译,生成

  

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

  注:其实

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

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

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

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

最新文章

  1. js实例--飞机大战
  2. CPU的性能对比
  3. 编译android源码官方教程(3)下载代码
  4. POJ1008Maya Calendar
  5. python selenium自动化(三)Chrome Webdriver的兼容
  6. OC 冒泡排序 -- 核心代码
  7. ssh框架用JUnit测试
  8. selenium自动化测试
  9. mac上搭建appium+IOS自动化测试环境(一)
  10. CentOS7快速搭建LNMP环境
  11. ARM-linux与Ubuntu开发工具NFS及流程
  12. C# 方法扩展
  13. VDSR
  14. IntelliJ IDEA常用快捷键(一)
  15. 五.JQuary 实例
  16. 爬虫之requests请求库高级应用
  17. SharePoint Framework 企业向导(五)
  18. Android检查手机上是否安装了第三方软件的方法------本文以百度地图为例
  19. oracle 删除字段中空格
  20. Qt判断操作系统代码

热门文章

  1. 如何使用 awk 的 ‘next’ 命令
  2. 【实践】用for-in 循环实现三联联动
  3. 【百度地图JavaScript API】手机端浏览器定位的实现
  4. Android 常见内存泄漏的解决方式
  5. HTTP常用端口号与对应的服务说明
  6. JAVA 画图机制
  7. Unity3D实现3D立体游戏原理及过程,需偏振眼镜3D显
  8. 解决svn Authorization failed错误
  9. Android双向seekbar
  10. struts2配置默认Action