①新建项目-->win32-->win32项目-->输入项目名为DllTest-->选择Dll-->选择空项目-->完成
②添加头文件和源文件并命名为DllTest.h和DllTest.cpp(方法:分别在头文件和源文件 :右键---添加---新建项)
③头文件和源文件的定义(这里我们只实现加法运算)
// DllTest.h
- #ifdef DLL_API
- #else
- #define DLL_API __declspec(dllexport)
- #endif
- // 声明要导出的函数
- DLL_API int add(int a, int b);
- #define DLL_API __declspec(dllexport)
- #include "DllTest.h"
- int add(int a, int b)
- {
- return a + b;
- }
④我们编译运行一下,因为不是完整的文件,这里会报错,不过没关系,这是我们找到文件存放的位置,会发现DeBug文件中会包含
这些生成的文件,这里我们只关心.dll和.lib文件。在Debug同级目录下,在DllTest文件中,会找到DllTest.h文件
.dll文件即使动态链接库,.lib文件是程序开发用的导入库,.h文件包含导出函数的声明
⑤我们再新建一个项目,命名为TestForDll,选择win32 控制台应用程序
⑥将我们④中的三个文件存放到TestForDll目录下的TestForDll文件中
如果我们直接存放在TestForDll文件中会出现 error C1083: 无法打开包括文件: “DllTest.h”
如果我们这时只把DllTest.h放进去的话会出现错误:error LNK1104: 无法打开文件“DllTest.lib”
这时再把.lib文件放入TestForDll目录下的TestForDll文件中,就可以正常的编译运行
使用#pragma comment(lib,"DllTest")命令链接到DllTest.lib库。当然我们也可以使用项目---属性---配置属性----链接器---输入-----附加依赖项中添加DllTest.lib
这里给出main函数的实现
- #include <stdio.h>
- #include "DllTest.h"
- #pragma comment(lib,"DllTest.lib")
- int main()
- {
- int a = 3;
- int b = 2;
- printf("a+b=%d\n", add(a,b));
- return 0;
- }
备注:如果我们把没把.dll文件放在debug目录下,当关闭程序,重新启动的时候,会出现找不到.dll文件的错误
因此我们最好要把.dll文件放在debug目录下