范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

CC实战029VS2019创建及使用动态链接库详解

  前面在文章【C/C++实战023:动态类库的开发详解】分享了用VS2015来创建动态链接库,随着Visual Studio的升级动态链接库的结构也在更新。Visual Studio2019在创建动态链接库的时候会自动为我们新增了DLL模块入口函数DllMain,当Windows加载DLL模块时会调用这个函数。
  创建动态链接库工程
  Visual Studio简化了工程创建,直接在新建的时候找到"动态链接库(DLL)"就可以快速的创建一个开发动态链接库的工程项目。
  工程文件
  工程中会生成几个文件分别是dllmain.cpp、framework.h、pch.h、pch.cpp,dllmain.cpp是Dll的入口函数,framework.h主要是从Windows头文件中排除极少使用的内容,pch.h和pch.cpp是工程的预编译文件(这个两个文件在旧版的VS中是没有的)。这两个文件是作为编译中间件来提高编译速度的,所以建议不要直接删除 pch.h/.cpp否则工程会报错,新增源码文件记得要引入#include "pch.h"。
  定义函数
  我们可以直接在pch.cpp中来定义两个函数测试下功能,这里我们实现两个最简单的加法和乘法计算函数。定义函数第一个部分是函数的返回类型,接着是函数名称和一对括号(如果该函数需要参数则在该括号中定义)。功能逻辑我们定义在花括号中,如果有返回值记得返回对应的数据类型。// pch.cpp: 与预编译标头对应的源文件 #include "pch.h" // 当使用预编译的头时,需要使用此源文件,编译才能成功。 int add(int a, int b) { 	return a + b; } int ride(int a, int b) { 	return a * b; }声明函数
  为了不暴露函数的具体实现逻辑,我们通常会将函数的声明在pch.h文件中实现。利用dllimport 或 dllexport 特性来声明该 C++ 类,当声明类 dllexport 时其所有成员函数和成员属性都将导出,当声明类dllimport 时将导入所有其成员函数和成员属性。该函数并没有真正的实现该函数的方法,只是告诉程序这个函数允许被其他程序调用(对外函数接口)。 #ifndef PCH_H #define PCH_H // 添加要在此处预编译的标头 #include "framework.h" #define  HNC_DLL_API extern"C" _declspec(dllexport)  #else #define  HNC_DLL_API extern"C" _declspec(dllimport) #endif //PCH_H HNC_DLL_API int add(int a, int b); ------------------------或者-------------------------------- extern "C" _declspec(dllexport) int add(int a, int b);编译项目
  点击"生成"->"生成解决方案",编译之后可以在工程项目的debug目录下找到生成的dll和lib文件。.lib文件是在编译的时候和DLL一起生成的,lib一般是一些索引信息,记录了dll中函数的入口和位置(DLL导出的函数名称和位置)。应用程序通过LIB文件链接到DLL文件。.dll动态连接库文件含有类、函数、变量定、实现的代码和数据,也是真正的可执行文件。动态链接库最大的好处就是节省内存,程序在没有运行到dll中的函数的时就不会去分配空间调用该库,只有在运行到了dll时才通过dll的接口函数访问dll函数。这样不仅大大提高了程序的运行效率,也方便程序的更新,同时还降低了内存的消耗。
  引入动态链接库文件
  我们继续在这个解决方案中添加一个Console控制台工程,利用其main主函数来调用Dll1中的方法函数。要访问到Dll1中的方法函数我们需要拿到想要的.h头文件、.lib导出文件和.dll动态连接库文件,最简单的方法就是将头文件、lib和dll添加到当前工程目录下直接调用。如果你希望可以方便地调试那么就通过工程属性来引用,那么当动态链接库更新之后我们也可以快速的获取到。在工程上点击右键->属性->C/C++->常规中,在附加包含目录中引入.h所在目录。在工程上点击右键->属性->连接器->常规中,在附加库目录中引入.lib所在目录。在工程上点击右键->属性->连接器->输入中,在附加依赖项中添加你用到的lib名。
  调用动态链接库函数
  在Console.cpp文件中将头文件"pch.h"引入,接着我们在main函数中就可以调用到Dll1定义的方法了。#include  #include  #include "../Dll1/pch.h" using namespace std; int main() {     int ret = add(5,9);     cout << ret << endl;     return 0; }总结:
  如果你新增源码文件记得要引入#include "pch.h",如果你确定要删除文件pch.h/.cpp,那么就需要进入工程属性–>c/c+±->预编译头,将预编译头改成"不使用预编译"再删除。然后我们需要修改dllmain入口文件,将framework.h中定义的内容提取过来这样framework.h也可以删掉了。//DllMain文件 #define	 WIN32_LEAN_AND_MEAN     // 从 Windows 头文件中排除极少使用的内容 #include  BOOL APIENTRY DllMain( HMODULE hModule,                        DWORD  ul_reason_for_call,                        LPVOID lpReserved                      ) {     switch (ul_reason_for_call)     {     case DLL_PROCESS_ATTACH:     case DLL_THREAD_ATTACH:     case DLL_THREAD_DETACH:     case DLL_PROCESS_DETACH:         break;     }     return TRUE; }
  以上内容是小编给大家分享的【C/C++实战029:VS2019创建及使用动态链接库详解】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

免费以旧换新!三菱重工空调x物优家寻找20年空调老友20年前,三菱重工在中国扎根,为百万国内用户带来了夏日的清凉与冬季的温暖20年后,三菱重工按下重播键,开启与你的又一个老友记!三菱重工空调老友记正式启动,三菱重工空调物优家老友记2宝德自强PC功能大揭秘之多屏协同ampampamp安卓容器对于职场人来说,没有什么比选择一款性能出色的办公PC更为重要的了,因为它能使您事半功倍,效率飙升。最新上市的宝德自强PT620Q就是这样一款设备,它好用易用功能齐全,兼具时尚简约的宝德自强PC功能大揭秘之键盘快捷开机ampampamp超级快充在上期揭秘宝德自强PT620Q多屏协同和安卓容器功能后,受到大家的广泛关注和热议,本期我们将继续来揭秘它的键盘快捷开机超级快充功能,定能让您大开眼界。键盘快捷开机开机无需弯腰!自定聆听好声音,可怡拉近你与音乐的距离音乐的独白音乐是心灵的独白耳机是独白的载体好音乐需要好耳机可怡带你倾听绝美之乐可怡科技是专注于声学研发设计与智能软硬件开发的专业音频品牌,致力于以精湛的工程学严苛的检测体系,打造出在科技与音乐的十字路口,可怡看到未来我们站在科技和人文的十字路口乔布斯一十字路口19世纪中叶以前,声音就像风一样,掠过耳边却不留痕迹,人们想要欣赏音乐,只有一种方式,你必须亲自站在演唱者面前,才能听到歌声。没有留声机5G已来,与可怡一起迎接音乐的未来我们尚还在享受4G对我们生活带来的革新之时,5G已经开启了正式商用。恐怕没有任何一次通讯技术的革新能比5G更受到国人的关注了。5G能够提高带宽降低时延,基本指向于网络能够支撑更好的央视推出全新CCTV电视频道24小时播放4K高清节目2022年冬奥会越来越近了,央视昨晚宣布推出全新的频道CCTV16奥林匹克频道,成为全球首个24小时上星播出的4K超高清体育频道。据央视介绍,奥林匹克频道是中央广播电视总台与国际奥成为下一个种子选手!雀巢小佳膳携手孙一文来帮忙今年可谓名副其实的运动之年。东京奥运会和西安全运会接连唤起了一波又一波的全民运动热情。少年神枪手水花消失术等运动新词不断刷屏热搜,赛场上所向披靡的运动健儿幼年的训练比赛视频纷纷被广vivoX70Pro怎么样?实测无短板,堪称全能旗舰当代用户在选购手机时所关注的因素很多,除了会考虑手机的性能是否够强之外,还会关注其颜值够不够高续航能力和影像表现能否满足自己需求等等。在近段时间上线的新机中,vivoX70系列的超ColorOS12适配计划再加速多款机型即将公测,老用户看过来近日,ColorOS官方公布了ColorOS12的11月升级适配计划,目前OPPOFindX3ProFindX3Pro火星探索版FindX3等机型已参与公测计划,并将在11月25日骁龙778G有多稳?90帧模式,K9s游戏体验流畅到底大家都知道,性能是手机的核心,所以芯片的优劣尤为重要,在目前的中端手机市场,不知不觉中骁龙778G已经担起了大任。这款芯片采用台积电6nm工艺制程,大核为四颗A78,主频达到2。4
首降50,天玑90001亿像素2K直屏,小米性价比再次升级天玑9000处理器,1亿像素主摄,2K直屏,开售仅仅一天,单平台的单品销量接近10万台,这款手机就是RedmiK50pro,它惊人之处不只是这么一点,我们一起来见识见识。Redmi手机性能过剩!用了三年依旧流畅你的手机用了多少年了?前段时间看到一篇文章说,现在年轻人不再盲目最求新手机,而是换个手机壳,感觉像换新手机。究其原因,现在手机确实是越来越好用,一部骁龙865或麒麟990的处理器手国产致态M。2固态1TB,TiPro7000系列读取速度达到了7300MBs致态TiPro7000的强大性能得益于Xtacking(晶栈)2。0架构,其创新技术可实现在两片独立的晶圆上加工外围电路和存储单元,使NAND拥有更高的IO接口速度。支持PCleG首次无缘Windows系统!微软IE浏览器6月正式停用微软将于今年6月15日正式停止IE浏览器的运营,现在微软官方博客再次发文敦促相关机构尽早主动停用IE浏览器,并推荐了MicrosoftEdge浏览器。微软列举了从IE浏览器转向Ed华为Mate50X连同HarmonyOS3一起发布,酝酿已久,华为开始大反击最近关于华为这个品牌,在系统和新机上都有了消息!虽然说因为5G芯片供应不上,导致华为5G手机业务是处于瘫痪状态,但大家知道的,就算是在4G领域现在华为也还坚持发布新机,毕竟5G网还去年闯关科创板IPO被否,今年重新申请挂牌新三板!目标指向北交所五一假期前夕,多家企业集体申报挂牌新三板,近10家企业2021年盈利规模超过1000万元,新三板申报挂牌企业质量持续提升。二度申报挂牌新三板的汇川科技,去年净利润超过8000万元。AMD三款RDNA3架构GPU规格爆料4096819212288流处理器IT之家5月3日消息,AMD新一代显卡将在今年下半年发布,随着发布时间的临近,新款显卡的规格信息也越来越清晰。根据爆料者Greymon55的最新消息,AMD即将推出的三款RDNA3FileZillaServer1。4。0发布,开源FTP服务器FileZillaServer是一个免费开源的FTP和FTPS服务器,能够提供与服务器的安全加密连接。FilezillaServer没有实现对SFTP(SSH文件传输协议)的支持。2022年血月即将来袭!真的有不祥之兆要降临吗?为何让人害怕有一些人觉得月球的存在很碍事,例如有一些俄罗斯的科学家就曾经认为如果没有月球,那地球的地轴可能就不会出现倾斜。如果地球的地轴不倾斜,那太阳的直射点就会一直位于赤道附近,南北半球接收特斯拉杀手Rivian将获15亿美元建厂补贴特斯拉(902。94,32。18,3。70)竞争对手Rivian周一表示,其计划在乔治亚州建设的电动汽车工厂将获得15亿美元的州和地方补贴。该公司此前宣布计划投资50亿美元在乔治亚Coinbase(COIN。US)CEO未来10年使用加密技术的人将增至10亿智通财经APP获悉,Coinbase(COIN。US)创始人兼首席执行官BrianArmstrong表示,未来十年来,使用或尝试使用加密技术的人数将从目前的2亿人增至10亿人。我猜