VS2017创建DLL项目及调用
1、创建一个DLL项目,windows桌面->动态链接库(DLL)
4、为dll项目添加一个函数接口;项目鼠标右键->添加->新项目->添加.h文件
5、DLL库接口函数的声明
#ifndef EXPORT_DLL
#define EXPORT_API __declspec(dllimport)
#else
#define EXPORT_API __declspec(dllexport)
#endif
6、在项目属性-> C/C++ -> 预处理器->预处理器定义->定义宏(方便更改项目)
7、导出函数的定义实现
7、重新编译我们可以看见生成了.lib和.dll文件;动态链接库生成的.dll.lib:.dll文件中是自定义函数的具体内容,.lib文件通常是dll中函数的入口和位置索引信息。
8、解决方案DLL添加一个控制台项目,右键单击“解决方案管理器”列表中的控制台项目,在弹出菜单中选择“生成依赖项 > 项目依赖项”打开“项目依赖项窗口”;勾选依赖于“Dll1”,表示控制台项目ConsoleApplication1依赖Dll1项目。这样可以保证每次编译ConsoleApplication1时,编译器总会自动先编译Dll1项目,保证Dll1总是最新的。
9、生成的dll和lib拷贝到控制台输出的文件.exe文件中,Dll1.h拷贝到控制台的.cpp文件目录下
10、在展开的VS2017宏列表中,搜索“( Out ”即可看到列表中显示宏“(OutDir)”表示解决方案Dll1的输出目录。由于ConsoleApplication1和Dll1项目均位于解决方案Dll1下,因此在默认配置下,这两个项目的输出文件均位于该输出目录下。只要将$(OutDir)充当静态库的查找目录,就可以方便的找到“Dll1.lib”。记住这个宏名称后,点击“宏(M) <<”按钮隐藏宏列表页;
11、选择“ConsoleApplication1属性页”左侧列表中的“输入”,然后在右侧“附加依赖项”中填入“dll1.lib;”,告诉编译器需要链接dll1.lib,进而加载我们需要的“Dll1.dll”。设置之后,点击“确定按钮”关闭属性页;
12、在VS2017工作区中,打开“ConsoleApplication1.cpp”文件,然后在代码中包含“dll1.h”(注意这里的相对路径,目录起点为ConsoleApplication1.cpp所在的目录),之后在main()函数中添加调用printHello()函数的代码;
注意:
1)没有生成lib文件,目前发现是几个DLL项目放在同一个文件下面,新建一个文件再去创建DLL项目,就可以生成lib
2)__declspec和_declspec需要验证