背景
DLL调用有两种方式,一种是静态调用,另一种是动态调用。对于静态调用主要是对开发环境进行设置,导入DLL所需的头文件和库文件,就可以直接调用DLL中导出的函数了,这种调用方式会使程序较大,占用内存较大,但速度较快,而且使用起来比较方便。
但是,本文要介绍的是动态调用的方式,动态调用可以根据需要加载响应函数,随时可卸载。不会因为找不到dll,导致程序不能运行。但是,使用上相对于静态调用来说比较麻烦。
现在,就把DLL动态调用及调用其导出函数的实现过程整理成文档,分享给大家。
函数介绍
LoadLibrary 函数将指定的模块加载到调用进程的地址空间中。 指定的模块可能会导致其他模块被加载。
函数声明
HMODULE WINAPILoadLibrary(
_In_LPCTSTR lpFileName
);
参数
lpFileName [in]
模块的名称。这可以是库模块(.dll文件)或可执行模块(.exe文件)。指定的名称是模块的文件名,与库模块本身中存储的名称无关,由模块定义(.def)文件中的LIBRARY关键字指定。
如果字符串指定完整路径,则该函数仅搜索该模块的该路径。
如果字符串指定相对路径或没有路径的模块名称,则该函数使用标准搜索策略来查找模块;有关更多信息,请参阅备注。
如果该功能找不到模块,该功能将失败。指定路径时,请确保使用反斜杠(\),而不是斜杠(/)。有关路径的更多信息,请参阅命名文件或目录。
如果字符串指定了没有路径的模块名称,并且省略了文件扩