VS2013编写一个DLL,并创建EXE对DLL进行调用

本文详细介绍了在Visual C++中创建DLL项目的过程,包括设置项目为DLL类型、定义导出函数和变量、生成DLL文件,以及如何在另一个EXE项目中引入并使用该DLL。

转载:

https://blog.youkuaiyun.com/u014630431/article/details/72732198

 

一、创建DLL项目

        文件->新建->项目->Visual C++  win32控制台程序(填写项目名makeDLL)->下一步->(应用程序设计)勾选:DLL、导出符号->完成

二、项目自动生成DLL模板

  1. makeDLL.h

  2. // 下列 ifdef 块是创建使从 DLL 导出更简单的

  3. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MAKEDLL_EXPORTS

  4. // 符号编译的。在使用此 DLL 的

  5. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将

  6. // MAKEDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的

  7. // 符号视为是被导出的。

  8. #ifdef MAKEDLL_EXPORTS

  9. #define MAKEDLL_API __declspec(dllexport)

  10. #else

  11. #define MAKEDLL_API __declspec(dllimport)

  12. #endif

  13.  
  14. // 此类是从 makeDLL.dll 导出的

  15. class MAKEDLL_API CmakeDLL {

  16. public:

  17. CmakeDLL(void);

  18. // TODO: 在此添加您的方法。

  19. };

  20.  
  21. extern MAKEDLL_API int nmakeDLL;

  22.  
  23. MAKEDLL_API int fnmakeDLL(void);

  24. // makeDLL.cpp : 定义 DLL 应用程序的导出函数。

  25. //

  26.  
  27. #include "stdafx.h"

  28. #include "makeDLL.h"

  29.  
  30.  
  31. // 这是导出变量的一个示例

  32. MAKEDLL_API int nmakeDLL=0;

  33.  
  34. // 这是导出函数的一个示例。

  35. MAKEDLL_API int fnmakeDLL(void)

  36. {

  37. return 42;

  38. }

  39.  
  40. // 这是已导出类的构造函数。

  41. // 有关类定义的信息,请参阅 makeDLL.h

  42. CmakeDLL::CmakeDLL()

  43. {

  44. return;

  45. }


在makeDLL.h中声明要被调用的函数

 

MAKEDLL_API int Add(int a, int b);


在makeDLL.cpp中实现要被调用的函数

  1. MAKEDLL_API int Add(int a, int b)

  2. {

  3. return a + b;

  4. }

三、生成项目,在Debug中生成的文件如下

 

四、创建要使用DLL的EXE项目

        文件->新建-> 项目->Visual C++ win32控制台应用程序(填写项目名testDLL)->一路下一步.....

五、引入DLL

        1、将makeDLL.h、makeDLL.lib放入testDLL文件夹

        2、在资源管理器处,项目名称上右键,点开最下面属性页,选择C/C++->常规->附加包含目录,写入makeDLL.h文件的路径

 

         3、同样方法,进入属性页,选择  链接器->常规->附加库目录,写入makeDLL.lib 文件路径

           4、项目testDLL生成,出现Debug文件夹,将makeDLL.dll文件拷贝进Debug文件夹

         5、在testDLL.cpp文件中,对DLL中函数进行调用

               #pragma是一条编译器指令,告诉编译器要链接一些东西,在comment里指明是什么

  1. #include "stdafx.h"

  2. #include<iostream>

  3.  
  4. #include "makeDLL.h"

  5. #pragma comment(lib,"makeDLL.lib") //指定与静态库一起链接,手动包含(标题3所示)之后可以省略

  6.  
  7. int _tmain(int argc, _TCHAR* argv[])

  8. {

  9. int a, b, c;

  10. std::cin >> a >> b;

  11. c = fnmakeDLL(a, b);

  12. std::cout << c << std::endl;

  13. system("pause");

  14. return 0;

  15. }

        6、运行结果显示

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值