1.1 创建dll项目


1.2 为dll项目编写源文件


头文件dllDemo.h
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数。
extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数

extern "C" _declspec(dllexport) int Min(int a, int b);//取较小值函数

源文件dllDemo.cpp

#include "dllDemo.h"
extern "C" _declspec(dllexport)int Sum(int a, int b)
{return a+b;}
extern "C" _declspec(dllexport)int Max(int a, int b)
{
    if(a>=b)
        return a;
    else
        return b;
}
extern "C" _declspec(dllexport)int Min(int a, int b)
{
    if(a>=b)
        return b;
    else
        return a;
}
1.3 生成dll文件

编译源文件,如果没有出现错误提示,那么,在项目文件根目录的Debug文件夹内会生成

一个dll文件“dllDemo.dll”。

2 DLL调用

2.1 用C++调用显式链接

新建一个Win32的控制台程序进行显式调用:

1. 新建“UseDll”的Win32控制台程序项目

2. 新建cpp文件“UseDll.cpp”

3. 将在第一节中,在Debug目录下编译生成的“dllDemo.dll”(显式调用时只需要这一

个文件就够了)文件复制到“UseDll”项目下的Debug文件夹根目录下

4. 在“UseDll.cpp”文件中编写以下代码对dll中的函数进行显式调用

代码:
#include <iostream>
#include< windows .h>
using namespace std;
void main(void)
{
 typedef int(*pMax)(int a,int b);
 typedef int(*pMin)(int a,int b);
 pMax Max=NULL;
 pMin Min=NULL;
 HINSTANCE hDLL;
 hDLL=LoadLibrary("dllDemo.dll");//加载动态链接库dllDemo.dll文件;
 Max=(pMax)GetProcAddress(hDLL,"Max");
 Min=(pMin)GetProcAddress(hDLL,"Min");
 if (Max)//如果取出函数成功,则执行下面的语句
 {
  int A=Max(5,8);
  cout<<"比较的结果为"<<A<<endl;
 }
 if (Min)
 {
  int B=Min(5,8);
  cout<<"比较的结果为"<<B<<endl;
 }
 FreeLibrary(hDLL);//卸载MyDll.dll文件

}

5、运行效果如下:

原网站上的文章里面代码有点小小的错误,在这里我已经修改好了。可能还存在不足之处,望多包涵!

//

转载:http://www.2cto.com/kf/201205/132151.html

VC创建DLL动态链接库及其调用相关推荐

  1. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  2. VC++ MFC DLL动态链接库编写详解

    虽然能用DLL实现的功能都可以用COM来替代,但DLL的优点确实不少,它更容易创建.本文将讨论如何利用VC MFC来创建不同类型的DLL,以及如何使用他们. 一.DLL的不同类型 使用VC++可以生成 ...

  3. VS2017创建DLL文件并调用

    项目中甲方需要我把一个写好的函数打包成DLL,因为之前没有做过,中间也遇到了很多问题,比如找不到创建的DLL文件.生成了DLL但是没有生成lib文件等.因此在创建完成并成功测试后写了这篇博客,希望能帮 ...

  4. 创建DLL动态链接库——声明导出法

    DLL声明导出法:是通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明. 头文件定义如下(OPdll.h): 源文件定义如下(OPdll.cpp): 通过以上两个文件 ...

  5. CANoe DLL编程(一)—— Visual Studio 创建DLL以及动态调用

  6. python编译成dll文件_用vc生成可被python调用的dll文件

    前提已经有.c 和.i文件 用swid编译了.i文件生成了wrap.c文件和.py文件 vc创建dll工程 将.h加入到头文件中.c文件和wrap.c文件添加到源文件中 将.i文件添加到工程目录下 T ...

  7. 怎么创建dllwenjian_如何创建DLL文件

    动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添 ...

  8. 最简单C++生成dll 给C#调用的方法

    利用C++创建DLL并C#调用 环境:window 10,VS2015 community 一.利用C++创建DLL 1.新建项目: 2.打开CreateDLL.cpp文件,并输入测试代码 新建cpp ...

  9. VS2019-C++创建和调用DLL动态链接库(傻瓜式教程)

    前言:查了好久好久网上的资料C++调用动态链接库,试了好多方法(直接创建DLL.空项目创建的)都多多少少有些问题,最后自己不断摸索着成功了,还是很开心的,接下来把最清晰的步骤分享给大家(C++新人,有 ...

最新文章

  1. django学习笔记【003】创建第一个带有model的app
  2. 数据库 chapter 12 数据库管理系统
  3. DataBseDesign工作笔记003---ERStudio使用笔记_基本使用方法详解
  4. @Column(s) not allowed on a @ManyToOne property: com.strive.entity.Module.parent
  5. L2-007 家庭房产 (25 分)
  6. php发起预约申请,php版微信公众平台实现预约提交后发送email的方法
  7. vue 图片拖拉转放大缩小组件
  8. [原创]AD7705/AD7706的使用
  9. PageHelper自定义count
  10. 在ubuntu 的QT中不能使用搜狗输入法
  11. qq不能远程桌面连接到服务器,win10系统qq无法远程协助的解决办法
  12. 联阳IT6561方案设计|替代IT6561方案DP转HDMI转换|CS5218替代IT6561芯片设计
  13. 2018蓝桥杯校选复现3
  14. MYSQL 时间格式化
  15. 幼儿园买玩具_二进制枚举
  16. 现代通信原理与技术 matlab,现代通信原理与技术.pdf
  17. 手工彻底清除各种顽固性 Trojan Horse ***的方法
  18. 设置input type=text的默认值
  19. Ural 1998 The old Padawan(二分)
  20. MS17-010永恒之蓝-漏洞利用+修复方法

热门文章

  1. reload端口 tomcat_tomcat上部署网站的三种方式
  2. ACL'21 | 弱标签的垃圾数据,也能变废为宝!
  3. IDEA:com.intellij.execution.ExecutionException: not found for the web module.
  4. Tomcat性能优化总结
  5. 日记——2019-03-12
  6. Spring Boot-springbootHelloword(一)
  7. 下学期第三次作业——SQA计划和验收测试规程设计
  8. 2017-2018-1 20155338 《信息安全系统设计基础》第七周学习总结
  9. 脱裤子放屁,多此一举
  10. 12.4scrum report