最近遇到一个问题,公司产品中某个动态链接库的名字和win2008 terminal service的一个d
ll重名。因此老是调到windows的dll,出错。查了一下dll的调用顺序,确信修改path环境变量是行不通的。于是只能手动把那个dll copy到所有需要用的程序所在的目录下。(由于修改dll的名字影响太大了)。
动态链接的方法
链接动态链接库里的函数的方法如下:
加载时动态链接(Load_time dynamic linking)
如上所述。Windows搜索要装入的DLL时,按以下顺序:
应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。
运行时动态链接(Run_time dynamic linking)
程 序员使用LoadLibrary把DLL装入内存并且映射DLL到调用进程的虚拟地址空间(如果已经作了映射,则增加DLL的引用计数)。首 先,LoadLibrary搜索DLL,搜索顺序如同加载时动态链接一样。然后,使用GetProcessAddress得到DLL中输出函数的地址,并 调用它。最后,使用FreeLibrary减少DLL的引用计数,当引用计数为0时,把DLL模块从当前进程的虚拟空间移走。
动态链接的方法
链接动态链接库里的函数的方法如下:
加载时动态链接(Load_time dynamic linking)
如上所述。Windows搜索要装入的DLL时,按以下顺序:
应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。
运行时动态链接(Run_time dynamic linking)
程 序员使用LoadLibrary把DLL装入内存并且映射DLL到调用进程的虚拟地址空间(如果已经作了映射,则增加DLL的引用计数)。首 先,LoadLibrary搜索DLL,搜索顺序如同加载时动态链接一样。然后,使用GetProcessAddress得到DLL中输出函数的地址,并 调用它。最后,使用FreeLibrary减少DLL的引用计数,当引用计数为0时,把DLL模块从当前进程的虚拟空间移走。