win7系统 如何给程序指定所需dll文件的目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7系统 如何给程序指定所需dll文件的目录相关的知识,希望对你有一定的参考价值。

我有个应用程序,需要调用某些专用的dll文件,如果不把dll放在system文件夹里,也不想放到程序目录下,而是放到其他目录下,如何让应用程序找到他们? 通过环境变量?

1、如何了解某应用程序使用哪些DLL文件   右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。   2、如何知道DLL文件被几个程序使用   运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrentVersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。   3、如何解决DLL文件丢失的情况   有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。   rundll的功能是以命令列的方式呼叫Windows的动态链结库。   Rundll32.exe与Rundll.exe的区别就在于前者是用于32位的链结库,后者是用于16位的链结库。rundll32.exe是专门用来调用dll文件的程序。   如果用的是Win98,rundll32.exe一般存在于Windows目录下;   如果用的WinXP,rundll32.exe一般存在于Windows\System32目录下。   若是在其它目录,就可能是一个木马程序,它会伪装成rundll32.exe。
DLL 故障排除工具
  可以使用多个工具来帮助您解决 DLL 问题。以下是其中的部分工具。   Dependency Walker   Dependency Walker 工具可以递归扫描以寻找程序所使用的所有依赖 DLL。当您在 Dependency Walker 中打开程序时,Dependency Walker 会执行下列检查:   ·Dependency Walker 检查是否丢失 DLL。   ·Dependency Walker 检查是否存在无效的程序文件或 DLL。   ·Dependency Walker 检查导入函数和导出函数是否匹配。   ·Dependency Walker 检查是否存在循环依赖性错误。   ·Dependency Walker 检查是否存在由于针对另一不同操作系统而无效的模块。   通过使用 Dependency Walker,您可以记录程序使用的所有 DLL。这可能有助于避免和更正将来可能发生的 DLL 问题。当您安装 Microsoft Visual Studio 6.0 时,Dependency Walker 将位于以下目录中:   drive\Program Files\Microsoft Visual Studio\Common\Tools   DLL Universal Problem Solver   DLL Universal Problem Solver (DUPS) 工具用于审核、比较、记录和显示 DLL 信息。下表说明了组成 DUPS 工具的实用工具:   ·Dlister.exe:该实用工具枚举计算机中的所有 DLL,并且将此信息记录到一个文本文件或数据库文件中。   ·Dcomp.exe:该实用工具比较在两个文本文件中列出的 DLL,并产生包含差异的第三个文本文件。   ·Dtxt2DB.exe:该实用工具将通过使用 Dlister.exe 实用工具和 Dcomp.exe 实用工具创建的文本文件加载到 dllHell 数据库中。   ·DlgDtxt2DB.exe:该实用工具提供 Dtxt2DB.exe 实用工具的图形用户界面 (GUI) 版本。
DLL 的类型
  当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。   1、加载时动态链接   在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。   2、运行时动态链接   在运行时动态链接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时,无需使用导入库文件。   Win32 DLL的特点   Win32 DLL与 Win16 DLL有很大的区别,这主要是由操作系统的设计思想决定的。一方面,在Win16 DLL中程序入口点函数和出口点函数(LibMain和WEP)是分别实现的;而在Win32 DLL中却由同一函数DLLMain来实现。无论何时,当一个进程或线程载入和卸载DLL时,都要调用该函数,它的原型是   BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);   其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;这里主要介绍一下第二个参数,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入),DLL_THREAD_ATTACH(线程载入),DLL_THREAD_DETACH(线程卸载),DLL_PROCESS_DETACH(进程卸载),在DLLMain函数中可以对传递进来的这个参数的值进行判别,并根据不同的参数值对DLL进行必要的初始化或清理工作。举个例子来说,当有一个进程载入一个DLL时,系统分派给DLL的第二个参数为DLL_PROCESS_ATTACH,这时,你可以根据这个参数初始化特定的数据。另一方面,在Win16环境下,所有应用程序都在同一地址空间;而在Win32环境下,所有应用程序都有自己的私有空间,每个进程的空间都是相互独立的,这减少了应用程序间的相互影响,但同时也增加了编程的难度。大家知道,在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,当进程在载入DLL时,系统自动把DLL地址映射到该进程的私有空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间,也就是说每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。因此,在Win32环境下要想在多个进程中共享数据,就必须进行必要的设置。亦即把这些需要共享的数据分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享。
参考技术A Windows7安装软件时提示丢失SetupXML.dll文件的解决方法:
1、在Windows系统中安装软件运行时,一般都是从软件的安装目录中调用所需的模块(.dll)文件,如没有所需模块(.dll)文件,再到 Windows\System 32 文件夹中调用。如果 Windows\System 32 文件夹中也没有模块(.dll)文件,就会出现提示丢失SetupXML.dll文件的错误信息。
2、一般来说,只要软件能与 Windows 7系统兼容,这些模块(.dll)文件都可以在 系统文件夹中找到。我们从系统文件夹中把指定的模块文件复制出来,粘贴到Windows\System 32 文件夹就可以了。
步骤:
1、开始 - 运行(输入CMD)确定或者回车,打开管理员命令窗口;
2、在打开的管理员命令窗口,我们输入:cd\,回车;
3、再继续输入:dir SetupXML.dll /s,回车;
4、此时,管理员命令窗口中会出现SetupXML.dll文件在系统C盘中的文件目录,可以看到SetupXML.dll文件在系统C盘中的文件目录为:C:\Windows\Syswow 64;
5、打开C盘,找到Windows,并左键点击:Windows;
6、在Windows窗口中找到:Syswow 64的文件夹并左键点击Syswow 64的文件夹;
7、在Syswow 64的文件夹中找到:SetupXML.dll,并右键点击SetupXML.dll - 复制;
8、再打开Windows窗口,找到:system 32文件夹,并左键点击:system 32文件夹;
9、在打开的system 32文件夹窗口,右键点击空白处 - 粘贴,退出;
10、再打开VideoStudio Pro X6软件的窗口,把SetupXML.dll文件也复制进去;
11、在做好了上述准备工作以后,现在就可以顺利地安装VideoStudio Pro X6软件了。
12、如果系统文件中没有SetupXML.dll文件,可以在网上下载后,再按照上述方法把SetupXML.dll文件复制到system 32文件夹中,也可以把SetupXML.dll文件再复制到VideoStudio Pro X6软件中。

计算机丢失了skinH.dll怎么办

参考技术A 先在网上下载一个 skinH.dll,网上有很多这样的资源。然后
①将下载解压的dll文件复制到C:\Windows\System32系统目录下(请注意:Win7、Vista的系统目录请以实际为准);
②打开“开始”菜单-选择“运行”,输入“regsvr32 skinh.dll”,在接下来的窗口中按回车确认即可。
③如果在运行某软件或编译程序时提示缺少、找不到skinh.dll等类似提示,您可按照提示的路径将dll拷贝到指定目录即可,或者重新添加文件引用。
参考技术B 这几个没有办法的 参考技术C 上网下个,然后装上

以上是关于win7系统 如何给程序指定所需dll文件的目录的主要内容,如果未能解决你的问题,请参考以下文章

电脑丢失tinyxml.dll怎么修复啊,win7的

vc6.0在win7上运行结果总是很快就消失怎么回事

Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径

电脑是win7系统,桌面老是显示同目录下无法找到DLL文件:"System.dll".请与作者联系

怎么解决win7“126找不到指定模块”这个问题

win7系统电脑提示“未指定的错误”怎么办