C++中调用DLL实现数据加密

C++中调用DLL实现数据加密,第1张

C++中调用DLL实现数据加密,第2张

模块化贯穿于软件工程的每个开发阶段,模块复用是构建大型系统的重要思想。模块复用方法包括:函数、函数库、动态链接库和COM。它们都是基于模块化的基本思想。函数是最简单的模块化思想,是后面方法的基础,甚至是一个应用的基础。函数库是函数的组合。一般是把一些功能相近的函数放在一起作为一个函数库。这个函数库通常被称为静态库,其链接方式是静态的。COM组件对象模型,这是一种集成技术,可以使程序在运行时混合各种不相关的软件程序,而不管这些不相关的程序是用什么语言编写的。它也是一种标准或协议,负责将一个软件模块与另一个软件连接起来。动态链接库(DLL)是一个可以被其他应用程序共享的程序模块。它封装了一些可以共享的例程和资源,链接方式是动态的。dll文件的扩展名一般是DLL,或者fon、sys、dry。它非常类似于可执行文件(。exe),但不同的是,DLL虽然包含可执行代码,但不能单独执行,而是要由Windows应用程序直接或间接调用。Windows操作系统包含大量的动态链接库,其中最重要的是KERNEL32.DLL、USER32.DLL和GDI32.DLL。

DLL的调用

要调用DLL,需要先把DLL文件映射到用户进程的地址空,然后才能调用函数。该函数的调用方式与流程内部的通用函数相同。Windows提供了两种将dll映射到进程地址空的方法:

1.加载时的隐式链接

此方法需要由DLL项目生成的已编译的LIB文件,该文件包含DLL允许应用程序调用的所有函数的列表。当链接器发现某个应用程序调用了LIB文件中列出的某个函数时,它会在该应用程序的可执行文件的文件映像中添加一些信息,这些信息表示包含该函数的DLL文件的名称。当这个应用程序运行时,也就是它的可执行文件被操作系统生成为镜像文件时,系统会检查这个镜像文件中关于DLL的信息,然后将这个DLL文件映射到进程的地址空。

通过系统DLL文件的名称,当试图将该文件加载到进程地址空时,它按以下顺序查找DLL文件路径:

程序运行的目录,即可执行文件所在的目录;

当前程序的工作目录

系统目录:对于Windows95/98,可以调用GetSystemDirectory函数获取;对于WindowsNT/2000,是指32位Windows的系统目录,也可以调用GetSystemDirectory函数获取SYSTEM32的值。

Windows目录

PATH环境变量中列出的所有目录

在VC中加载DLL的LIB文件有三种方法:

①LIB文件直接添加到工程文件列表中。

在VC中打开文件查看页面,选择项目名称,点击鼠标右键,然后选择“向项目添加文件”菜单,在弹出的文件对话框中选择LIB文件加入DLL。

②设置项目的项目设置,加载DLL的LIB文件。

打开项目的项目设置菜单,选择Link,然后在对象/库模块下的文本框中输入DLL的LIB文件。

③通过程序代码的方式。

添加预编译指令#pragma注释(LIB," *。lib”)。这种方法的优点是,您可以使用条件预编译指令来链接不同版本的lib文件。因为,在调试模式下,生成的LIB文件是调试版本,比如Regd.lib;在发布模式下,生成的LIB文件是发布版本,比如Regr.lib

当应用程序加载DLL的LIB文件时,它还需要包含头文件(*。h)对应于DLL。在这个头文件中,DLL中定义的函数原型被给出,然后被声明。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中调用DLL实现数据加密

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情