相信很多同学和我一样,刚开始用到动态链接库时都感觉有些迷茫,最近看了一点相关资料,现总结如下:
windows下调用顺序为:
启用“安全DLL查找模式时”:
1、应用程序所在目录(.exe所在目录)
2、系统目录(通常是windows\systems)
3、windows目录
4、当前目录
5、环境变量PATH目录
禁用“安全DLL查找模式时”:
1、应用程序所在目录(.exe所在目录)
2、当前目录
3、系统目录(通常是windows\systems)
4、windows目录
5、环境变量PATH目录
详情可参见[1]
使用动态链接库时通常又分为静态调用和动态调用:
静态调用:由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码。程序员在建立DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件,包含DLL每一个函数的符号名和可选的标识号,不包含真实的执行代码。应用程序在编译时其调用函数名与LIB相对应,LIB也包含DLL文件名(不是完整的)。在运行应用程序时,系统根据已有信息加载DLL。
动态调用:由API函数显式的加载或卸载DLL来达到调用DLL的目的,使用上较为复杂,但能更加有效的使用内存。使用DLL的程序在使用之前必须加载(LoadLibrary)DLL从而得到一个DLL模块的句柄,然后调用GetProcAddress函数得到输出函数的指针,在退出之前必须卸载DLL(FreeLibrary)。
详情参见[2]
免责声明:如有侵权,烦请及时告知,本人会及时删除相关内容。
[1]
http://www.cnblogs.com/tocy/p/windows_dll_searth_path.html%E2%80%9C1%E2%80%9D
[2]
http://blog.csdn.net/csw_100/article/details/4802501