转载:
https://blog.youkuaiyun.com/u014630431/article/details/72732198
一、创建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.h -
CmakeDLL::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、运行结果显示

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

被折叠的 条评论
为什么被折叠?



