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

来源:互联网 发布:中信银行软件 编辑:程序博客网 时间:2024/06/05 01:10

一、创建DLL项目

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

二、项目自动生成DLL模板

        

makeDLL.h// 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MAKEDLL_EXPORTS// 符号编译的。在使用此 DLL 的// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将// MAKEDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的// 符号视为是被导出的。#ifdef MAKEDLL_EXPORTS#define MAKEDLL_API __declspec(dllexport)#else#define MAKEDLL_API __declspec(dllimport)#endif// 此类是从 makeDLL.dll 导出的class MAKEDLL_API CmakeDLL {public:CmakeDLL(void);// TODO:  在此添加您的方法。};extern MAKEDLL_API int nmakeDLL;MAKEDLL_API int fnmakeDLL(void);
// makeDLL.cpp : 定义 DLL 应用程序的导出函数。//#include "stdafx.h"#include "makeDLL.h"// 这是导出变量的一个示例MAKEDLL_API int nmakeDLL=0;// 这是导出函数的一个示例。MAKEDLL_API int fnmakeDLL(void){return 42;}// 这是已导出类的构造函数。// 有关类定义的信息,请参阅 makeDLL.hCmakeDLL::CmakeDLL(){return;}

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

MAKEDLL_API int Add(int a, int b);

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

MAKEDLL_API int Add(int a, int b){return a + b;}

三、生成项目,在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里指明是什么

#include "stdafx.h"#include<iostream>#include "makeDLL.h"#pragma comment(lib,"makeDLL.lib")  //指定与静态库一起链接,手动包含(标题3所示)之后可以省略int _tmain(int argc, _TCHAR* argv[]){int a, b, c;std::cin >> a >> b;c = fnmakeDLL(a, b);std::cout << c << std::endl;system("pause");return 0;}

        6、运行结果显示