【传输平台】06 vs2013 .dll文件的创建和引用(动态链接库)(编码,解码,释放空间函数动态库创建)

我们这个项目有用到.dll文件的创建和引用。最初我用的VS2019,发现得用软件默认的.cpp 和.h文件,对於单.cpp/.h文件还好,但是对于多文件的话实在是不方便。(说句老实话,我捣试了好一会还是有问题,因此下载了VS2013)

01 动态库在linux和windows下的表现

(1)Linux下是这个样子:xxxxx.so 和xxxxx.h
(2)Windows下是:xxxxx.dll和xxxxx.h
注意:动态库的名字不要用中文,不要带空格

02 动态库概念

(1).dll不是.exe,不能直接执行
(2)动态库的目的:集成很多函数,被别人直接执行。(也是为了保护源码不泄露)
(3)函数导出符: _declspec(dllexport) 具体用法是将这个加在你要集成函数的前面(.c文件的函数前面和.h文件的函数声明之前都要加)
(4)xxxxx.dll :动态库的文件
xxxxx.lib :动态库的描述文件

下来我们看怎么创建动态库和测试动态库。(这里用和我们项目有关的解码和编码的API函数控件)
解释一下:一个对象的要用到三个函数:编码函数,解码函数,释放空间函数。

03 创建动态库(多.c和多.h文件)

(1)打开vs2013,依此点击文件–>新建–>项目–>win32控制台应用程序–>.dll和空项目
在这里插入图片描述
(2)把自己要进行集成的.c与.h文件放进去如下图
做项目的话到这一步都是测试好的代码,直接放在新建的这个项目文件夹里面,加载现有项就OK。
在这里插入图片描述
(3)开始对代码进行稍微改动
在你将要集成的函数头之前加入 _declspec(dllexport),不管是函数的声明和函数都必须加,不然系统默认加_declspec(dllexport)的函数和没加的是两个函数(会出现函数名重复的问题)。
我们这块集成MsgEncode(),MsgDecode(),MsgMemFre();
在这里插入图片描述
在这里插入图片描述
这块只举了一个图例,对于你要集成的所有函数都得在函数名之前加入 _declspec(dllexport)

(4)生成动态库
点击 生成–>生成解决方案。最后要么出现成功一个,要么出现最新一个
注意:这块不是编译哈,说了这不是exe文件。不要点击调试。(F5/F11/F10)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看Debug文件里面是否有xxxxx.dll和xxxxx.lib文件.有的话代表成功。

04 测试调用动态库

这个是按照通常创建项目,写代码的方式创建:文件–>新建–>项目–>win32控制台应用程序–>控制台应用和空项目
(1)写好我们要测试的keymng_msg_test.c文件,然后在该测试文件的同级目录中加入keymng_msg.h,mymsgreal.dll,mymsgreal.lib这三个文件。
在这里插入图片描述
(2)点击项目–>属性–>连接器–>输入 添加依赖项mymsgreal.lib
在这里插入图片描述
在这里插入图片描述
(3)在和keymng_msg_test.c文件同级目录的Debug文件夹里面加入.dll和.lib文件
在这里插入图片描述

(4)运行测试程序。
注意:按照这个过程一步一步来就不会出错。若出现错误检查自己哪一步没有做。
也可参照博客:https://www.cnblogs.com/tiangaipain/p/3712500.html

至此我们安全传输平台的Windows下的编码解码和释放编码解码所用空间的函数动态库创建完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章