一、创建动态链接库文件

** 
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)的更多相关文章

  1. Windows Phone 8加载外部动态链接库DLL(非安装包内的)

    Windows Phone 8加载外部动态链接库DLL(非安装包内的) 在<动态加载与插件化>中大概介绍了下,wp8加载非安装包的下动态链接库,这次详细梳理下. 加载外部DLL主要的原理: ...

  2. [笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...

  3. 在Windows下如何创建指定的虚拟环境

    前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下).今天小编给大家分享一下,如何创建的指定的Python环境. 创建 ...

  4. C# 创建和引入动态链接库dll文件

    一.创建动态链接库dll文件 新建 -> 项目->类库 名称为:dlltest 添加函数:消息框弹出消息 using System.Collections.Generic; using S ...

  5. Windows下尝试PHP7提示丢失VCRUNTIME140.DLL的问题解决

    前天PHP7.0.0正式版发布了,有一些比较好的改进,官方也说速度比php5.6快了两倍,性能上有了很大提升,并且也发布了从php5.x向php7迁移的问题,所以今后php网站迁移后能够大幅度的提升网 ...

  6. windows下vs2013使用C++访问redis

    刚开始在windows下使用c++访问reids各种报错,经过网上到处搜方案,终于可以在windows下访问redis了,特将注意事项记录下来: 1.获取redis Window下的开发库源码,从gi ...

  7. Windows下VS2013 C++编译测试faster-rcnn

    [原创帖!转载请注明出处:http://www.cnblogs.com/LaplaceAkuir/p/6445189.html] 本人最近研究faster-rcnn,在ubuntu成功跑通matlab ...

  8. 在Windows下如何创建虚拟环境(默认情况下)

    很多小伙伴平时在使用Python的时候,有的项目需要使用Python2来进行开发,有的项目则是需要Python3来进行开发.当不清楚怎么分开环境的时候,此时两个环境开始打架,彼此傻傻分不清楚.虚拟环境 ...

  9. Windows 下 pycharm 创建Django 项目【用虚拟环境的解释器】

    1.  背景 我在 Windows 下的 pycharm  直接创建 全新 Django  项目 会  pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以可以 ...

随机推荐

  1. 在庫購買管理(MM)

    ■購買管理■ [購買依頼]ME51N: 登録ME52N: 変更ME53N: 照会 [購買発注]ME21N: 登録ME22N: 変更ME23N: 照会 [見積依頼]ME41: 登録ME42: 変更ME4 ...

  2. 笔记-python lib-pymongo

    笔记-python lib-pymongo 1.      开始 pymongo是python版的连接库,最新版为3.7.2. 文档地址:https://pypi.org/project/pymong ...

  3. linux c scanf()小解

    今天学习了新的内容,关于c语言的scanf()函数. scanf()函数,读取指定格式的值赋值给相应变量.空格(‘ ‘),回车('\n'),TAB是分隔符,轻易不会被读取.还有,该函数的返回值是正确读 ...

  4. JS:关于JS字面量及其容易忽略的12个小问题

    简要 问题1:不能使用typeof判断一个null对象的数据类型 问题2:用双等号判断两个一样的变量,可能返回false 问题3:对于非十进制,如果超出了数值范围,则会报错 问题4:JS浮点数并不精确 ...

  5. 2753: [SCOI2012]滑雪与时间胶囊

    2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 2633  Solved: 910 Descriptio ...

  6. border与透明边框

    1.背景:怎样增加复选框响应域的大小?就是,复选框点击区域增大一些 需求复选框的视觉区域大小(不含边框)是16px*16px 现在要把可点击区域增加到20px*20px 解决方案: box-shado ...

  7. CFileDialog OFN_NOCHANGEDIR

    问题:CFileDialog 调用后变成了当前工作路径,变成了CFileDialog所选择的路径. 解决:在CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR就可以了,不会 ...

  8. 22、(转载)jQueryMobile 知识点总结

    本文转自:http://www.cnblogs.com/jxyedu HTML5技术生态介绍 H5的现状与未来 HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准 ...

  9. 如何在乌班图上配置java开发环境

    不想说的那么细,每条命令都说一下,在现在这个浮躁的时代,很少有人能看的下去,我就直接上命令,最简单的快捷的方式. 1:安装软件 2:设置root密码 3:配置mysql远程登录 4:安装java运行环 ...

  10. Python学习-day17 jQuery method and demo

    一:介绍: jQuery:是DOM和js的封装.jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).现在大多数的pc端的网站都 ...