VS2015静态库的使用(上)
相关视频教程下载地址http://pan.baidu.com/s/1dFnGUD7
静态库是一个包含了数据和函数的二进制的文件,其后缀名是lib。当使用静态库编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件。
1静态库的创建
首先在VS2015中创建一个“Win32项目”,之后将“应用程序类型”设置为“静态库”,如图1-1所示。
图1-1 创建静态库项目
创建静态库时,需要创建库的头文件和源文件。
1.1创建头文件
选中“解决方案资源管理器”中静态库项目的“头文件”,之后鼠标右键弹出菜单,选择“添加->新建项”,添加一个名为Win32_LIB_Test.h的头文件。并在该头文件中声明一个名为“add”的函数,该函数的作用是返回两个加数的和,参数为两个加数,返回值为和。
#pragma once
extern "C" unsigned int add(unsigned int x, unsigned int y);
其中,extern “C”表示add()函数采用C语言方式进行编译。
相关链接:
C++函数默认的调用方式为_cdecl,以上add()函数等价于
extern "C" _cdecl unsigned int add(unsigned int x, unsigned int y);
此时,编译后的add()函数名为“_add”;而如果不加extern “C”修饰,则编译后的add()函数的函数名为“?add@YAHHH@Z”。WINAPI函数的调用方式是_stdcall,如果add()函数的声明方式为
extern "C" _stdcall unsigned int add(unsigned int x, unsigned int y);
则其编译后的函数名为_add@8,其中8表示函数参数的字节数。
1.2源文件的编写
选中“解决方案资源管理器”中静态库项目的“源文件”,之后鼠标右键弹出菜单,选择“添加->新建项”,添加一个名为Win32_LIB_Test.cpp的源文件。在源文件中添加以下代码
#include "stdafx.h"
#include "Win32_LIB_Test.h"
int add(unsigned int x, unsigned int y)
{
return x + y;
}
1.3 静态库的编译
点击VS2015菜单栏中的“生成->重新生成解决方案”,重新生成静态库文件。此时在程序源代码所在的“Debug”文件夹中就会生成Win32_LIB_Test.lib静态库文件。
2 静态库的使用
在生成了静态库之后,接下来创建一个基于对话框的MFC程序,在MFC程序中调用静态库中的add()函数。
2.1 MFC程序的创建
2.1.1界面设计
新建一个“MFC应用程序”,在“应用程序类型”中选择“基于对话框”,如图2-1所示。
图2-1 创建基于对话框的MFC程序
接下来为该MFC对话框程序设计界面,如图2-2所示
图2-2 界面设计
其中,IDC_EDIT_ADD1和IDC_EDIT_ADD2两个编辑框控件用来输入两个加数,当点击了IDC_BUTTON_RESULT按键后,在IDC_EDIT_RESULT中显示这两个加数的和。
VS2015静态库的使用(上)相关推荐
- automake生成静态库文件_动手 | 奶奶级的动态库入门
程序编译过程 库文件 静态链接和动态链接的区别? 从0开始 - 创建和使用静态链接库 创建静态库项目 向静态库中添加文件 编译静态库 创建引用静态库的C++控制台应用 在应用中使用静态库功能 从0开始 ...
- aix 的c库为什么都是静态库_关于AIX libpthread.a 静态库
关于AIX libpthread.a 静态库 (2011-12-20 05:32:32) 标签: 杂谈 关于AIX libpthread.a 静态库有哪位兄弟知道怎么弄 到AIXlibpthread ...
- linux centos 编译luabind-0.9.1 动态库 静态库
luabind下载 luabind-0.9.1 下载地址 :http://download.csdn.net/download/yzf279533105/10109861 编译步骤 一. 需先编译好l ...
- linux centos 编译Lua5.2.0 静态库 动态库
一 lua下载 lua5.2.0下载地址 :http://download.csdn.net/download/yzf279533105/10109818 二 笔者这里linux环境为centos6. ...
- Linux静态库和动态库学习总结
一.废话 之前由于工作需要,要封装一个Linux加密解密转换的动态库,这个之前只做过Windows下面的,Linux下面还真没有做过,之后做了整一个晚上才算做好,不过其中也学到了不少东西,包括Linu ...
- autotools入门笔记(二)——创建和使用静态库、动态库
带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...
- x64 编译 静态链接_C++静态库与动态库
这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自 ...
- 静态库和动态库介绍以及Makefile
1.库文件介绍 (1)库文件的提供方式:静态库/动态库 + 头文件说明.其中头文件是说明静态库/动态库里都实现了哪些函数,就好像是库的说明书一样,使用库的开发者需要根据头文件来使用库: (2)库文件的 ...
- VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)
VS2015编译32位Opencv310(动态库+静态库 编译过得,可以直接用的: http://download.csdn.net/download/longzaihuaxia/9802510 之前 ...
- VS2015编译Qt5.7.0生成支持XP的静态库
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
最新文章
- 第6章 数组----复制数组
- python升级版本命令_如何在python中安装和配置kivy库
- 使用webpack开发ES6程序的正确姿势
- 云服务器怎么多人进去编辑文档,一台云服务器多人使用
- debian添加快捷启动方式
- httphandler java_java – 使用HTTPHandler上传文件
- Ansible自动化运维
- ubuntu adb 命令
- 用Vue.js做了一个九宫格图片展示模块(可点击进行缩放)
- 福州大学数据科学与计算机学院分数,2021福州大学录取分数线-福州大学分数线-2021福州大学录取查询网址...
- (十八)自动装配-@Autowired-构造器,参数,方法,属性
- 反编译 逆向工具集合
- 蒲公英 · JELLY技术周刊 Vol.22: npm i react-router@6.0.0-beta.0
- 什么是服务器 ?服务器常见的系统和技术有哪些?
- asp源码爱好者福利,asp调用微信扫一扫代码,用asp写的调用微信内置扫一扫功能源码下载
- 华为“啃”苹果 | 一点财经
- 如何让电子顺磁共振(EPR)定量更准确
- Springboot + Vue实现大文件切片上传
- 【程序员2公务员】五、实操指南
- 机器学习(第一章)—— 特征工程