C++ DLL动态库的创建与调用(类库,隐式调用)

 更新时间:2022年05月20日 09:57:12   作者:廷益--飞鸟  
本文主要介绍了C++ DLL动态库的创建与调用(类库,隐式调用),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

1、创建库工程

请添加图片描述

请添加图片描述

2、添加头文件

ClassDll.h

// 宏定义 防止.h文件重复编译
#ifndef _DLLCLASS_H
#define _DLLCLASS_H

// dll库文件 定义 宏(DLLCLASS_EXPORTS) 使用 _declspec(dllexport)
// 使用dll库文件时 _declspec(dllimport)(不定义宏就行)
#ifdef DLLCLASS_EXPORTS
#define EXT_CLASS  _declspec(dllexport)
#else
#define EXT_CLASS  _declspec(dllimport)
#endif

// 定义库文件的 类(导出或导入)
class EXT_CLASS CMath 
{
public:
	// 定义函数
	int Add(int item1, int item2);
	int Sub(int item1, int item2);
};

#endif



3、添加cpp文件

ClassDll.cpp

// 定义 宏(DLLCLASS_EXPORTS) 头文件类
// 使用 _declspec(dllexport) 导出
#define DLLCLASS_EXPORTS

#include "ClassDll.h"

// 实现类函数
int CMath::Add(int item1, int item2) 
{
	return item1 + item2;
}

int CMath::Sub(int item1, int item2) 
{
	return item1 - item2;
}

4、编译dll工程

生成文件

在这里插入图片描述

5、创建调用工程

普通工程、多字节项目

6、调用工程 添加cpp文件

UseClassdll.cpp

#include <iostream>
using namespace std;

// 导入头文件 库类 使用 _declspec(dllimport) 导出类
#include "../ClassDll/ClassDll.h"

// 隐式调用dll 加载库文件
#pragma comment(lib, "../Debug/ClassDll.lib")

// 运行时  dll文件与exe文件在一个文件夹中
int main() {
	// 定义 dll库中的类
	CMath math;

	// 调用函数
	int sum = math.Add(5, 6);
	int sub = math.Sub(5, 6);

	// 打印结果
	cout << "sum=" << sum << " sub=" << sub << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

在这里插入图片描述

到此这篇关于C++ DLL动态库的创建与调用(类库,隐式调用)的文章就介绍到这了,更多相关C++ DLL动态库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++骑士游历问题(马踏棋盘)解析

    C++骑士游历问题(马踏棋盘)解析

    这篇文章主要为大家详细介绍了C++骑士游历问题的解答思路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C语言实现三角函数表

    C语言实现三角函数表

    这篇文章主要为大家详细介绍了C语言三角函数表,打印出相对应的三角函数值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • C++AVL树4种旋转详讲(左单旋、右单旋、左右双旋、右左双旋)

    C++AVL树4种旋转详讲(左单旋、右单旋、左右双旋、右左双旋)

    AVL树即平衡二叉搜索树,平衡因子bf=右子树的高度-左子树的高度,bf为0,-1,1时,此树即平衡,下面这篇文章主要给大家介绍了关于C++AVL树4种旋转(左单旋、右单旋、左右双旋、右左双旋)的相关资料,需要的朋友可以参考下
    2022-11-11
  • C++中的命名空间详细介绍

    C++中的命名空间详细介绍

    大家好,本篇文章主要讲的是C++中的命名空间详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C语言线索二叉树基础解读

    C语言线索二叉树基础解读

    线索二叉树还是按照链二叉树的方法创建,只不过在结点原本为空的左指针改为指向该结点在中序遍历中的前驱,结点原本为空的右指针改为指向该结点在中序遍历中的后继,也就是说把空的指针给利用了起来
    2022-04-04
  • C++重载输入和输出运算符详解

    C++重载输入和输出运算符详解

    在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据的输入输出,本节以前面的 complex 类为例来演示输入输出运算符的重载,需要的朋友可以参考下
    2023-09-09
  • C++ STL中常见的算法使用方式

    C++ STL中常见的算法使用方式

    这篇文章主要介绍了C++ STL中常见的算法使用方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C++实现LeetCode(25.每k个一组翻转链表)

    C++实现LeetCode(25.每k个一组翻转链表)

    这篇文章主要介绍了C++实现LeetCode(25.每k个一组翻转链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 浅析C语言中对于char*和char[]的理解

    浅析C语言中对于char*和char[]的理解

    char * s 只是一个保存字符串首地址的指针变量,char a[]是许多连续的内存单元,单元中的元素是char型,char * 和 char a[]具有相同的效果,源于字符串的本质,这篇文章主要介绍了C语言中对于char*和char[]的理解,需要的朋友可以参考下
    2023-02-02
  • C/C++的堆栈内存分配的实现

    C/C++的堆栈内存分配的实现

    内存管理是至关重要的一个方面,堆和栈是C语言中重要的内存分配方式,本文主要介绍了C/C++的堆栈内存分配的实现,详细的介绍了这两者在管理方式、性能和使用场景,感兴趣的可以了解一下
    2024-07-07

最新评论