C++创建动态链接库(附原因说明)

C++创建动态链接库(附原因说明)

写在前面

在网上看了很多有关C++动态链接库配置的方法,大多数方法都多少有些不同,并且不讲原因,于是我结合各个方法、微软文档、自己的理解总结一下C++创建动态链接库的有效方法。

参考了:
C++生成Lib DLL并使用_哔哩哔哩_bilibili
C++动态链接库(DLL)的创建和调用 - 知乎 (zhihu.com)
C++生成DLL文件(visual studio 2019)面向小白萌新_c++ 生成dll-CSDN博客
理解 __declspec(dllexport)和__declspec(dllimport)-CSDN博客
演练:创建和使用自己的动态链接库 (C++) | Microsoft Learn

步骤

新建DLL项目

命名为MyCppDLL项目

查看预处理器定义

发现有个MYCPPDLL_EXPORTS
这个宏就是VS已经帮我们定义好的导出宏,C++要求要使得库中的类or函数被外部引用需要使用导出宏定义库中能被外部引用的类和函数

在pch.h中定义导出宏,至于为什么要这么定义,可以去看看看看这篇博客

理解 __declspec(dllexport)和__declspec(dllimport)

创建一个MyClass.h 实现导出类,注意类前一定要加我们刚刚定义的导出宏,不然其他工程文件就无法引用

在MyClass.cpp中去实现这个类

生成dll

这是生成的路径

可以看到生成了.dll、.exp、.lib、pdb这四个文件。我们只需要.dll和.lib,因为dll中存放了库的类和函数而.lib存放了类和函数的入口地址

接下来,创建一个新文件夹MyDLL,下面再创建两个文件夹,一个lib文件夹,一个include文件夹

将生成的dll和lib放在MyDLL/lib下

将你的所有头文件放在MyDLL/include文件夹下,这样我们的库就准备好了

创建一个Cpp控制台引用DLL

创建一个名为RunMyDLL的控制台程序

将你刚刚创建的库文件夹MyDLL拷到RunMyDLL工程目录下(这一步不做也行)

设置头文件位置,告诉工程第三方库的头文件在哪找

也就是.../MyDLL/include路径

设置Lib路径,告诉工程第三方库的Lib文件和Dll文件在哪找

也就是.../MyDLL/lib

设置要引用哪些Lib库,把我们的第三方库的库文件名输入进去,告诉项目我们要使用这个lib

创建一个cpp文件

写代码,使用第三方库的类Myclass

生成exe

这样就完成了

如何在任何地方使用你的exe

将你的第三方库的dl和lib全部放入生成的exe这目录下

这样你在任何地方都能使用这个exe了

写在后面

什么时候复刻长离啊

相关推荐
总要学点什么8 小时前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
starzy199012 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克60513 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
汉克老师13 小时前
《从C++小白到算法高手:GESP 1—8级成长地图》第一讲:认识GESP——从编程新手到算法探索者
c++·gesp·信息学竞赛·小学生学c++
吴可可12313 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
晴天的雨.99214 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime14 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
青少儿编程课堂14 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
another heaven14 小时前
【C/C++ 第一次跨越(上):用 C++11/14 停止制造新的旧代码】
c语言·c++·制造
qq_4069810314 小时前
c++ lamda(三)Lambda表达式
java·前端·c++