C++编写、生成、调用动态链接库

有些时候,我们想写自己的函数库以避免重复写代码,此文介绍如何使用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

原文地址:https://www.cnblogs.com/oneDongHua/p/14264074.html