VC 静态库与动态库(二)静态库创建与使用
1.新建项目,创建项目和解决方案
StaticLibrary 这是静态库项目
G:\C++Learn\Library Library文件夹用于存放库相关文件,包含静态库与后面的动态库工程和解决方案
StaticLibraryDemo 静态库解决方案名称
2.点击下一步,出现如下界面
选择静态库,选择预编译头,如果需要使用MFC就勾选上,最后点击完成
3.然后VS左边解决方案管理器会显示相关文件
这就是个最简单的静态库,编译生成下
4.文件夹生成了相关文件
解决方案目录:
解决方案目录下,项目文件夹StaticLibrary,Debug解决方案调试目录下面就存放了编译生成的.lib静态库
5. 给静态库项目添加一个c++类CMyMath供外部程序使用
然后分别添加二个函数,一个成员函数MathAdd 用于加法计算,一个全局函数MathSub 用于减法计算,最后编译生成
6. 给解决方案添加一个新的控制台项目用于测试静态库,创建完成后设置为启动项目
7. Test.CPP中添加相关代码
// Test.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "../StaticLibrary/MyMath.h" //静态库CMyMath头文件 #pragma comment(lib,"../Debug/StaticLibrary.lib") //引入静态库.lib文件
int _tmain(int argc, _TCHAR* argv[])
{
//使用静态库中CMyMath类,调用其中的MathAdd方法
CMyMath myMath;
int nResult = myMath.MathAdd(,);
printf("1 + 2 = %d\r\n",nResult);
//调用静态库中的全局函数MathSub
nResult = MathSub(,);
printf("5 - 1 = %d\r\n",nResult);
getchar();
return ;
}
8. 编译运行Test, 查看相关信息.
控制台输出调试信息,下方的模快里只有Test.exe以及系统dll,静态库中所有代码都被打包加到Test.exe中去
了,与动态库相比静态库最明显区别就是不需要加载dll
总结:
注意:当静态库代码进行修改后,Test项目也需要重新编译生成
小技巧:当需要使用多个库的时候,可以在解决方案目录下新建个library文件夹用于存放多个库的文件,整个项目组织结构更加清晰,方便引入库
VC 静态库与动态库(二)静态库创建与使用的更多相关文章
- Linux 下的静态(函数)库、动态(函数)库
0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...
- JAVASE(八) 数组: 一维数组、二维数组、动态数组、静态数组
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.一维数组 1.1 数组的声明和初始化声明方式: String str[]; //不建议使用 Stri ...
- C++调用DLL有两种方法——静态调用和动态调用
C++调用DLL有两种方法——静态调用和动态调用 标签: dllc++winapinullc 2011-09-09 09:49 11609人阅读 评论(0) 收藏 举报 分类: cpp(30) [ ...
- dll静态调用和动态调用
动态链接库有2种连接方式,一种是通过库直接加入(又叫隐式加载或载入时加载),一种是在运行时加入.后者很好理解,比如LoadLibrary(),GetProcAddress()获取想要引入的函数,使用完 ...
- 静态链接 VS 动态链接
什么是链接? 链接其实就是连接的意思,将所有相关的东西连接起来. 简单理解静态连接和动态链接: 静态链接:编译时完成链接 动态链接:程序运行起来后,根据需求再去链接,这就是动态链接 静态链接 什么是静 ...
- java静态代理和动态代理(一)
代理Proxy: Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题. 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为 ...
- Java基础-静态代理与动态代理比较
JAVA的静态代理与动态代理比较 静态代理类: 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了.动态代理类: 在程序运行时,运用反射机制动态创建 ...
- java静态代理与动态代理简单分析
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5860749.html 1.动态代理(Dynamic Proxy) 代理分为静态代理和动态代理 ...
- java之静态代理和动态代理
我们以几个问题,来开始我们今天的学习,如果下面几个问题,你都能说出个一二,那么恭喜你,你已经掌握了这方面的知识.1,什么是代理模式?2,Java中,静态代理与动态代理的区别?3,Spring使用的是J ...
- java 基础 --- 动态代理和静态代理
问题 : 代理的应用场景是什么 动态代理的底层原理是什么,为什么只能继承接口 概述 代理模式是设计模式的一种,简单地说就是调用代理类的方法实际就是调用真实类的方法.这种模式在AOP (切面编程)中非 ...
随机推荐
- Leetcode146-lru-cache
Leetcode146-lru-cache int capacity; int size; Map<Integer, ListNode> map = new HashMap<Inte ...
- glade No package 'libxml-2.0' found
------------恢复内容开始------------ 今天突发奇想 root@Aja:~/下载/libxml2-master# glade 不会用纳 百度一下——————————>> ...
- centos的key登录,关闭密码登录
1.删除机器原有的key rm -rf /root/.ssh 2.创建key[root@rain ~]# ssh-keygen -t rsa一路回车 3.改名[root@rain ~]# mv /ro ...
- spring 事务 XML
事务就是AOP的很典型的应用.(原来需要自己写代码前开启关闭事务,现在通过spring的配置) 所以必要要有<aop:config>,<aop:config>里面要有<a ...
- COMP 2406 – F19
COMP 2406 – F19 – A4 Due Friday, November 22nd at 11:59 PMAssignment 4 Trivia Quiz BuilderSubmit a s ...
- 阿里云 .NET SDK Roa 和 Rpc 风格签名
阿里云 .NET SDK Roa 和 Rpc 风格的签名 Demo,适用于自己不想用其提供的SDK,想用自己组装 Roa 和 Rpc 的签名方式. Roa 和 Rpc 的签名方式主要有以下几个不同点: ...
- IDEA设置外部比对工具Beyond Compare
设置IDEA使用外部的比对工具,比如Beyond Compare,其实很简单,但是可能好几年才会设置一次,比如换工作的时候,所以记录下来 可以通过菜单File-Settings 或者直接快捷键ctrl ...
- Kubernetes Pod 镜像拉取策略
Kubernetes Pod 镜像拉取策略 官方文档:https://kubernetes.io/docs/concepts/containers/images/ • IfNotPresent:默认值 ...
- 使用Charles进行HTTPS抓包及常见问题
在渗透过程中,需要对每一个参数,每一个接口,每一个业务逻辑构建测试用例,为此,抓包分析是必不可少的一个过程.在PC端,Burpsuite成为了渗透必备的神器,然而,使用Burpsuite有时候抓取不到 ...
- Java8新特性——StreamAPI 的使用
StreamAPI的说明 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API. Stream API ( java.util.stream) 把真正的 ...