• 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

  • 相关阅读:
    python之面向对象封装,多态
    python之面向对象继承
    python之面向对象类空间问题以及类之间的关系
    python之面向对象初识
    python之包及logging日志
    python之规范化开发
    python之模块Ⅱ
    python之模块Ⅰ
    python函数之闭包及装饰器
    python函数之内置函数
  • 原文地址:https://www.cnblogs.com/oneDongHua/p/14264074.html
Copyright © 2020-2023  润新知