首页 > 编程语言 >C++简单动态链接库的创建和引用(VS2022)

C++简单动态链接库的创建和引用(VS2022)

时间:2023-08-15 16:12:29浏览次数:45  
标签:头文件 lib C++ dll 引用 动态链接库 VS2022

原文:https://blog.csdn.net/XianLiangcheese/article/details/127125135

总结在前:
创建dll:
1.打开VS2022,创建一个“动态链接库”新项目
2.建立一个需要导出的类
3.编辑导出类里面的内容,其中需要在导出的方法,也就是在外面引用的方法,只需要在其类型声明前面加上“__declspec (dllexport)”
4.然后Shift+Ctrl+B直接编译,然后去找导出类的头文件和“lib”以及“dll”,这些是引用时必须的东西
引用dll:
1.用VS2022新建一个空项目
2.将dll资源文件复制到当前工程的资源文件路径
3.当将上述文件添加到位后,需要在当前工程“源.cpp”这里将“MyDll.h”和“Dll2.lib”导入工程
4.然后点击运行就可以得出代码的结果了,这个结果说明引用成功

一、动态链接库的创建
1.打开VS2022,创建一个新项目

选择“动态链接库”

我使用的是默认的项目名


2.建立一个需要导出的类
创建完工程后会来到这个界面,你可以直接关掉它

右键点击“解决方案管理器”中的选项,然后选择“添加”,选择“类”,我的类命名是“MyDll”


3.编辑导出类里面的内容,其中需要在导出的方法,也就是在外面引用的方法,只需要在其类型声明前面加上“__declspec (dllexport)”


然后只需要像正常的编程把函数内容完成就好了,先到cpp文件里把函数内容补全,我的ADD函数的功能就是返回传入参数的和


4.然后Shift+Ctrl+B直接编译,然后去找导出类的头文件和“lib”以及“dll”,这些是引用时必须的东西
头文件只需要在vs里面右键点击"MyDll.h"的选项卡,选择“打开文件位置”就可以找到了

 


至于“lib”和“dll”文件,在编译成功后,VS地下输出栏会有其地址

 

二、动态链接库的引用
1.用VS2022新建一个空项目


我使用默认的工程名

右键“源文件”添加一个源文件“源.cpp”,然后就直接在这个文件引用,不过在这之前需要将之前DLL工程编译生成的“lib”、“dll”和“MyDll.h”文件复制到当前工程的资源目录下,该资源目录可以直接右键“源.cpp”选项卡,选择“打开所在的文件夹”来直接找到,资源路径也可以根据自己的项目管理来设计。


2.将dll资源文件复制到当前工程的资源文件路径


导入头文件前需要先在“解决方案资源管理器”“头文件”添加现有项将目标头文件加入进来


3.当将上述文件添加到位后,需要在当前工程“源.cpp”这里将“MyDll.h”和“Dll2.lib”导入工程


4.然后点击运行就可以得出代码的结果了,这个结果说明引用成功

————————————————
版权声明:本文为CSDN博主「咸凉芝士」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XianLiangcheese/article/details/127125135

标签:头文件,lib,C++,dll,引用,动态链接库,VS2022
From: https://www.cnblogs.com/bruce1992/p/17631532.html

相关文章

  • C++语言常见知识点
    C++基础变量存在的意义是什么?作用:给一段指定的内存空间起名,方便我们管理操作这块内存。inta=10;常量的两种定义方式1、#definePI3.14 2、constinta=10;用于记录程序中不可更改的数据。标识符的命名规则1、不能是关键字2、只能由字母、下划线、数字构成3、不能数字......
  • C++黑马程序员——P228. pair对组
    P228.pair使用——pair对组的创建功能描述:  成对出现的数据,利用对组可以返回两个数据两种创建方式:pair<type,type>p(value1,value2);pair<type,type>p=make_pair(value1,value2);#include<iostream>#include<string>usingnamespacestd;//pair对组创建v......
  • c++初始化方式
    对类型进行初始化时,语法是相当的多,为什么要这么多初始化方法呢?主要是以前各种类型的初始化方式不同,现在演变成如此多的方式就是为了使初始化常规变量的方式与初始化类变量的方式更像。大括号初始化器是后来扩展出的用于任何类型,所以尽量使用大括号初始化语法。1、基本类型初始化......
  • 【C++STL基础入门】string类的基础使用
    @TOC前言本系列文章使用VS2022,C++20版本STL(StandardTemplateLibrary)是C++的一个强大工具集,其中的string类是STL中一个常用的容器。本文将介绍string类的基本使用方法。一、STL使用概述在STL中,我们的每一个容器/string字符串等都是使用面向对象技术来实现的,我们只需要调用里面的函......
  • C++ 调用 Python 接口 Mat转Numpy
    参考网站:https://blog.csdn.net/qq7835144/article/details/106073110?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242https://blog.csdn.net/weixin_46400740/article/details/116711323?spm=1001.2014.3001.5501 1、配......
  • C/C++基础知识点——设计原则及设计模式
    如何实现模块间高内聚、低耦合?封装与抽象;添加中间层;模块化;设计思想与原则单一职责;接口隔离原则;依赖倒置;迪米特原则;多用组合少用继承;设计模式:观察者模式设计原则及设计模式六大设计原则:单一职责原则;里氏替换原则;开闭原则;依赖倒置原则;接口隔离原则;最少知识原则。......
  • 7.1 C/C++ 实现动态数组
    动态数组相比于静态数组具有更大的灵活性,因为其大小可以在运行时根据程序的需要动态地进行分配和调整,而不需要在编译时就确定数组的大小。这使得动态数组非常适合于需要动态添加或删除元素的情况,因为它们可以在不浪费空间的情况下根据需要动态增加或减少存储空间。动态数组的内存......
  • 7.2 C/C++ 实现动态链表
    动态链表是一种常用的动态数据结构,可以在运行时动态地申请内存空间来存储数据,相比于静态数组和静态链表,更加灵活和高效。在动态链表中,数据元素被组织成一条链表,每个元素包含了指向下一个元素的指针,这样就可以通过指针将所有元素串联起来。使用动态链表存储数据时,不需要预先申请内......
  • 7.3 C/C++ 实现顺序栈
    顺序栈是一种基于数组实现的栈结构,它的数据元素存储在一段连续的内存空间中。在顺序栈中,栈顶元素的下标是固定的,而栈底元素的下标则随着入栈和出栈操作的进行而变化。通常,我们把栈底位置设置在数组空间的起始处,这样在进行入栈和出栈操作时,只需要维护栈顶指针即可。顺序栈的实现比......
  • 7.4 C/C++ 实现链表栈
    相对于顺序栈,链表栈的内存使用更加灵活,因为链表栈的内存空间是通过动态分配获得的,它不需要在创建时确定其大小,而是根据需要逐个分配节点。当需要压入一个新的元素时,只需要分配一个新的节点,并将其插入到链表的头部;当需要弹出栈顶元素时,只需要删除链表头部的节点,并释放其所占用的内......