Windows下VS2013创建与使用动态链接库(.dll)
一、创建动态链接库文件
**
1、打开VS2013,选择文件,新建工程
2、选择新建W32控制台应用程序,这里将工程名改为makeDLL
3、在应用程序类型中选择DLL,点击完成
4、完成以上步骤后,项目中会生成下列文件
5、下面创建自己编写的函数,以简单的求和函数add为例,首先在添加头文件createdll.h,createdll.h中的代码如下:
#ifndef CREARDLL_H_
#define CREARDLL_H_
_declspec(dllexport) int add(int x, int y);/*_declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出,我要给别人用。*/
int add(int x, int y); //求和函数
#endif
6、添加createdll.cpp文件,里面是对add函数的具体定义,如下所示
#include"stdafx.h" //注意不要忘了添加这个头文件
#include"creatdll.h"
#include<iostream>
int add(int x, int y)
{
return x + y;
}
#include"stdafx.h" //注意不要忘了添加这个头文件#include"creatdll.h"#include<iostream>int add(int x, int y)
{
return x + y;
}
7、最终项目中所有文件如下:
8、选择生成解决方案,即可在项目中生成exe文件的Debug文件夹中得到makeDLL.dll和makeDLL.lib两个文件。
对于生成的lib文件有如下解释:
如果有 dll 文件, 那么 lib 一般是一些索引信息, 记录了 dll 中函数的入口和位置,
dll 中是函数的具体内容;如果只有 lib 文件,那么这个 lib 文件是静态编译出来
的,索引和实现都在其中。使用静态编译的 lib 文件,在运行程序时不需要再挂
动态库,缺点是导致应用程序比较大,而且失去了动态库的灵活性。
**
二、使用动态链接库文件
**
1、新建一个空项目,命名为testDLL,将上面生成的makeDLL.lib文件放到项目的存放代码的路径下,makeDLL.dll放到项目中生成exe文件的Debug文件夹中。
2、在项目中添加程序testdll.cpp,代码如下:
#include<iostream>
#pragma comment(lib,"makeDLL.lib")
_declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。
int main()
{
std::cout << "2 + 3 = " << add(2, 3) << std::endl;
std::cin.get();
return 0;
}
#include<iostream>#pragma comment(lib,"makeDLL.lib")
_declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。int main()
{
std::cout << "2 + 3 = " << add(2, 3) << std::endl;
std::cin.get();
return0;
}
3、完成以上步骤即可看到输出结果如下,说明testDLL项目成功调用了makeDLL.dll里的求和函数add。
#include<iostream>#pragma comment(lib,"makeDLL.lib")
_declspec(dllimport) int add(int x, int y); //_declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入,我要用。int main()
{
std::cout << "2 + 3 = " << add(2, 3) << std::endl;
std::cin.get();
return0;
}
Windows下VS2013创建与使用动态链接库(.dll)的更多相关文章
- Windows Phone 8加载外部动态链接库DLL(非安装包内的)
Windows Phone 8加载外部动态链接库DLL(非安装包内的) 在<动态加载与插件化>中大概介绍了下,wp8加载非安装包的下动态链接库,这次详细梳理下. 加载外部DLL主要的原理: ...
- [笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...
- 在Windows下如何创建指定的虚拟环境
前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下).今天小编给大家分享一下,如何创建的指定的Python环境. 创建 ...
- C# 创建和引入动态链接库dll文件
一.创建动态链接库dll文件 新建 -> 项目->类库 名称为:dlltest 添加函数:消息框弹出消息 using System.Collections.Generic; using S ...
- Windows下尝试PHP7提示丢失VCRUNTIME140.DLL的问题解决
前天PHP7.0.0正式版发布了,有一些比较好的改进,官方也说速度比php5.6快了两倍,性能上有了很大提升,并且也发布了从php5.x向php7迁移的问题,所以今后php网站迁移后能够大幅度的提升网 ...
- windows下vs2013使用C++访问redis
刚开始在windows下使用c++访问reids各种报错,经过网上到处搜方案,终于可以在windows下访问redis了,特将注意事项记录下来: 1.获取redis Window下的开发库源码,从gi ...
- Windows下VS2013 C++编译测试faster-rcnn
[原创帖!转载请注明出处:http://www.cnblogs.com/LaplaceAkuir/p/6445189.html] 本人最近研究faster-rcnn,在ubuntu成功跑通matlab ...
- 在Windows下如何创建虚拟环境(默认情况下)
很多小伙伴平时在使用Python的时候,有的项目需要使用Python2来进行开发,有的项目则是需要Python3来进行开发.当不清楚怎么分开环境的时候,此时两个环境开始打架,彼此傻傻分不清楚.虚拟环境 ...
- Windows 下 pycharm 创建Django 项目【用虚拟环境的解释器】
1. 背景 我在 Windows 下的 pycharm 直接创建 全新 Django 项目 会 pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以可以 ...
随机推荐
- 方法的重写(Override)与重载(Overload)的含义与区别
1.Override(重写) 两同,两小,一大 两同:方法名相同,参数列表相同 两小:抛出的异常要小于等于父类,返回值类型要小于等于父类 一大:访问权限要大于等于父类 2.Overload(重载) 方 ...
- TouTiao开源项目 分析笔记8 图解分析数据加载方式
1.整体构架 1.1.以一个段子页面为例,列出用到的主要的类,以图片的方式展示. 1.2.基础类 这里最基础的接口有: IBaseView<T>==>定义了5个方法. 然后最基础 ...
- Android弹出输入提示框--PopupWindow实现
前言 之前直接用Dialog实现了弹出对话框.现在尝试用更好地解决方案--PopupWindow类--来实现 1.首先搞一个弹出框布局,和之前类似. 这样的东西,它的布局是这样: 1 <?xm ...
- 11,nginx入门与实战
网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web 网络服务是一种被动 ...
- Python基础——安装运行
Python是如何运行的? 像绝大多数编程语言一样,要在计算机上能够运行python程序,至少需要安装一个最小的Python包:一个Python解释器和支持的库. 安装Python 安装包下载:htt ...
- Spark Streaming实例
Spark Streaming实例分析 2015-02-02 21:00 4343人阅读 评论(0) 收藏 举报 分类: spark(11) 转载地址:http://www.aboutyun.co ...
- javaWEB简单商城项目
javaWEB简单商城项目(一) 项目中使用到了上一篇博文的分页框架,还有mybatis,重点是学习mybatis.现在有些小迷茫,不知道该干啥,唉,不想那么多了,学就对了 一.项目功能结构 1.功能 ...
- 《Cracking the Coding Interview》——第17章:普通题——题目7
2014-04-28 23:28 题目:给定一个数字,用英语把它读出来. 解法:ZOJ上有相反的题目.如果我要用中文读书来呢? 代码: // 17.7 Read an integer in Engli ...
- 《Cracking the Coding Interview》——第17章:普通题——题目5
2014-04-28 22:44 题目:猜数字游戏.四个数字,每个都是0~9之间.你每猜一次,我都告诉你,有多少个位置和数字都对(全对),有多少个位置错数字对(半对).比如“6309”,你猜“3701 ...
- USACO Section2.3 Money Systems 解题报告 【icedream61】
money解题报告------------------------------------------------------------------------------------------- ...