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

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. 猫猫学iOS之UITextField右边设置图片,以及UITextField全解

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果: 封装好的方法: 猫猫封装的一个小方法,简单共享出来,方便 ...

  2. The WebSocket Protocol

      [Docs] [txt|pdf] [draft-ietf-hybi-t...] [Diff1] [Diff2] [Errata] Updated by: 7936 PROPOSED STANDAR ...

  3. C++ Primer笔记2_四种类型转换_异常机制

    1.类型转换 命名的强制类型转换: 有static_cast.dynamic_cast.const_cast.reinterpret_cast static_cast: 编译器隐式运行的不论什么类型转 ...

  4. vue打包后出现一些map文件的解决方法

    Vue打包后出现一些map文件的解决办法: 问题: 可能很多人在做vue项目打包,打包之后js中,会自动生成一些map文件,那我们怎么把它去掉不要呢? 1.运行  cnpm run build  开始 ...

  5. SSH面试题目

    一简答 spring工作原理 为什么要用spring 3.请你谈谈SSH整合 4.介绍一下Spring的事务管理 5.Struct2基本流程 6.在Hibernate应用中Java对象的状态有哪些? ...

  6. 2013夏,iDempiere来了 - v1.0c Installers (Devina LTS Release) 2013-06-27

    怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ iDempiere来了 - v1.0c Installers (Devina LTS R ...

  7. nginx location静态文件配置

    进入nginx安装目录的conf目录下,修改nginx.conf文件,在一个server{}中添加 一个location 部分配置代码如下 root@ubuntu:/usr/local/nginx/c ...

  8. SQL SERVER 如何处理带字母的自增列--【叶子】

    --需求说明: /* id         col ---------- ---------- AB00001    a AB00002    b --当再插入数据的时候让id自动变成AB00003 ...

  9. oracle事务块示例

    begin Insert into T_SYS_PAGEOPER (FOPERID,FPAGEID) values (152,22); Insert into T_SYS_PAGEOPER (FOPE ...

  10. SSE,MSE,RMSE,R-square 指标讲解

    SSE(和方差.误差平方和):The sum of squares due to error MSE(均方差.方差):Mean squared errorRMSE(均方根.标准差):Root mean ...