C++创建和使用动态链接库

Posted ay-a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++创建和使用动态链接库相关的知识,希望对你有一定的参考价值。

一个简单的动态链接库的生成和调用例子,太过简单,大神请绕道。

一、创建动态链接库

  1. 使用vs创建工程选择动态链接库。

  2. 在项目中创建源文件和头文件,并在文件中添加以下代码。

  3. 在头文件中添加以下代码

    // dlltest.h   头文件,使用动态链接库时需要包含头文件
    
    #pragma once
    #ifdef __DLLEXPORT
    #define __DLL_EXP _declspec(dllexport)    // 导出函数 - 生成dll文件时使用
    #else
    #define __DLL_EXP _declspec(dllimport)    // 导入函数 -使用dll是使用
    #endif // __DLLEXPORT
    
    // 判断是否是c++
    #if defined(__cplusplus)||defined(c_plusplus)
    extern "C"
    
    #endif
     __DLL_EXP int add(int a, int b);
     __DLL_EXP int sub(int a, int b);
    
    #if defined(__cplusplus)||defined(c_plusplus)
    
    #endif
  4. 在源文件文件中添加以下代码

    // dlltest.cpp
    
    
    #include<stdio.h>
    #include"dlltest.h"
    #include"pch.h"
    
    
     int add(int a, int b)
    
     return a + b;
    
    
     int sub(int a, int b)
    
     return a - b;
    
  5. 在工程属性,C/C++ => 预处理器 => 预处理定义 中添加预定义宏__DLLEXPORT.

  6. 在工程属性,C/C++ => 预编译头 => 预处编译头 选择不使用预编译头。

  7. 编译生成dll文件和lib文件(如果没有生成lib文件,需要在工程中添加一个Source.def文件,内容为LIBRARY)。

二、使用动态链接库

1. 使用c++调用动态链接库

  1. 新建一个c++工程,包含dlltest.h头文件,并引用生成的lib文件。

  2. 添加源文件testcpp.cpp,在源文件中输入以下代码:

    #include <iostream>
    #include"dlltest.h"
    
    int main()
    
     printf("test cpp\n");
        std::cout << "Hello World!\n"; 
     printf("3+2 = %d\n", add(3, 2));
     printf("3-2 = %d\n", sub(3, 2));
    
  3. 编译,运行即可调用上面生成的动态链接库。

2.使用c调用动态链接库

  1. 新建一个c语言工程,包含dlltest.h头文件,并引用生成的lib文件。

  2. 添加源文件testc.c,在源文件中输入以下代码:

    // testc.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    #include <stdio.h>
    #include "dlltest.h"
    
    int main()
    
     printf("test c\n");
     printf("3+2 = %d\n", add(3, 2));
     printf("3-2 = %d\n", sub(3, 2));
    
    
    
  3. 编译,运行即可调用上面生成的动态链接库。

以上是关于C++创建和使用动态链接库的主要内容,如果未能解决你的问题,请参考以下文章

C++中动态库调用动态库如何调用啊

VS2019 C++动态链接库的创建使用

VS2019 C++动态链接库的创建使用 - 如何导出类

C++封装Halcon算法动态链接库Dll补充

使用VS2015创建和使用动态链接库-图文详解

Qt 共享库(动态链接库)和静态链接库的创建及调用