有些时候,我们想写自己的函数库以避免重复写代码,此文介绍如何使用Visual Studio编写,生成和调用自己的动态链接库。本文中采用隐式调用方式来调用动态链接库。
0,实验环境说明:
集成开发环境:Visual Studio 10.0
操作系统: Windows 10
语言:C/C++
1,编写自己的DLL
我们分两部分介绍如何完成编写生成自己的DLL库。
1.1,环境搭建
介绍如何使用Visual Studio建立一个DLL工程,以及额外的配置。
首先,建立一个dll的空工程,如下图所示:
添加两个文件,一个头文件(mydll.h),一个源文件(mydll.cpp),文件名根据自己的需要命名,这里并不需要写死文件名。
特别注意项目属性中是否存在类似如下图所示的内容,若无红框标记的宏,请添加合适的宏,例如MYDLL_EXPORT,一般以库形式建立的项目都会有类似的宏。
1.2,代码说明
向.h文件中添加如下内容:
#ifndef __MY_DLL_H__
#define __MY_DLL_H__
#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined MYDLL_EXPORTS
# define AB_EXPORTS __declspec(dllexport)
#else
# define AB_EXPORTS
#endif
AB_EXPORTS void func();
#endif
上面的代码中,func就是我们自己定义的函数。
向.cpp文件中添加如下代码:
#include "mydll.h"
#include <iostream>
void func(){
std::cout << "hello func
";
}
执行生成命令之后,在生成目录下回出现如下的内容:
2,测试自己编写的DLL
添加一个Win32 Consol Application空项目,向新项目中添加cpp代码文件,并加入如下代码:
#include "mydll.h"
#include <iostream>
using namespace std;
int main(){
func();
return 0;
}
然后按如下图所示配置。
这一步保证.h头文件可以被找到,保证编译的正常进行。
这两步是为了保证.lib文件可以被找到,保证了链接的正常进行。
然后便是build生成解决方案,这一步应该可以正常生成。
把两个项目放在同一个解决方案中就能够成功,因为两个项目生成的文件.exe,.dll都在项目的debug目录下, 若果不在同一个解决方案下,就需要手动复制.dll文件了
为了运行的成功,需要把mydll.dll文件复制到项目工作目录下(在VS中调试运行),或者放在项目的debug目录下(VS中调试运行以及生成的可执行文件.exe运行)。
Ctrl + F5执行!如下图所示执行结果:
总结
本文主要讨论了如何使用Visual Studio创建自己的dll,用例子阐述了这个过程,结果表明文中的方法可行。
为深入理解,请参考本博客的其他系列。
例子参考:https://blog.csdn.net/bendanban/article/details/42808027