<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DLL文件</title>
	<atom:link href="https://www.aitaocui.cn/tag/203501/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Thu, 24 Nov 2022 07:55:02 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>DLL文件</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>DLL文件(软件文件类型)</title>
		<link>https://www.aitaocui.cn/article/313885.html</link>
					<comments>https://www.aitaocui.cn/article/313885.html#respond</comments>
		
		<dc:creator><![CDATA[哈尼贝贝]]></dc:creator>
		<pubDate>Thu, 24 Nov 2022 07:55:02 +0000</pubDate>
				<category><![CDATA[百科]]></category>
		<category><![CDATA[DLL文件]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=313885</guid>

					<description><![CDATA[DLL（Dynamic Link Library）文件为动态链接库文件，又称“应用程序拓展”，是软件文件类型。在Windows中，许多应用程序并不是一个完整的可执行文件，它们被分割...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>DLL（Dynamic Link Library）文件为动态链接库文件，又称“应用程序拓展”，是软件文件类型。在Windows中，许多应用程序并不是一个完整的可执行文件，它们被分割成一些相对独立的动态链接库，即DLL文件，放置于系统中。当我们执行某一个程序时，相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件，一个DLL文件也可能被不同的应用程序使用，这样的DLL文件被称为共享DLL文件。</p>
</article>
<article>
<h1>链接方法</h1>
<p>当您在应用程序中加载 DLL 时，可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。</p>
<p>在运行时动态链接中，应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载DLL后，可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时，无需使用导入库文件。</p>
<p>Win32 DLL的特点</p>
<p>Win32 DLL与 Win16 DLL有很大的区别，这主要是由操作系统的设计思想决定的。一方面，在Win16 DLL中程序入口点函数和出口点函数（LibMain和WEP）是分别实现的；而在Win32 DLL中却由同一函数DLLMain来实现。无论何时，当一个进程或线程载入和卸载DLL时，都要调用该函数，它的原型是</p>
<p>BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);</p>
<p>其中，第一个参数表示DLL的实例句柄；第三个参数系统保留；这里主要介绍一下第二个参数，它有四个可能的值：DLL_PROCESS_ATTACH（进程载入），DLL_THREAD_ATTACH（线程载入）,DLL_THREAD_DETACH（线程卸载），DLL_PROCESS_DETACH（进程卸载），在DLLMain函数中可以对传递进来的这个参数的值进行判别，并根据不同的参数值对DLL进行必要的初始化或清理工作。</p>
<p>举个例子来说，当有一个进程载入一个DLL时，系统分派给DLL的第二个参数为DLL_PROCESS_ATTACH，这时，可以根据这个参数初始化特定的数据。另一方面，在Win16环境下，所有应用程序都在同一地址空间；而在Win32环境下，所有应用程序都有自己的私有空间，每个进程的空间都是相互独立的，这减少了应用程序间的相互影响，但同时也增加了编程的难度。</p>
<p>在Win16环境中，DLL的全局数据对每个载入它的进程来说都是相同的；而在Win32环境中，情况却发生了变化，当进程在载入DLL时，系统自动把DLL地址映射到该进程的私有空间，而且也复制该DLL的全局数据的一份拷贝到该进程空间，也就是说每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。</p>
<p>因此，在Win32环境下要想在多个进程中共享数据，就必须进行必要的设置。亦即把这些需要共享的数据分离出来，放置在一个独立的数据段里，并把该段的属性设置为共享。​</p>
<h1>故障排除</h1>
<p>可以使用多个工具来解决 DLL 问题。以下是其中的部分工具。</p>
<p>Dependency Walker</p>
<p>Dependency Walker 工具可以递归扫描以寻找程序所使用的所有依赖 DLL。当您在 Dependency Walker 中打开程序时，Dependency Walker 会执行下列检查：</p>
<p>·Dependency Walker 检查是否丢失 DLL。</p>
<p>·Dependency Walker 检查是否存在无效的程序文件或 DLL。</p>
<p>·Dependency Walker 检查导入函数和导出函数是否匹配。</p>
<p>·Dependency Walker 检查是否存在循环依赖性错误。</p>
<p>·Dependency Walker 检查是否存在由于针对另一不同操作系统而无效的模块。</p>
<p>通过使用 Dependency Walker，您可以记录程序使用的所有 DLL。这可能有助于避免和更正将来可能发生的 DLL 问题。当您安装 Microsoft Visual Studio 6.0 时，Dependency Walker 将位于以下目录中：</p>
<p>drive//Program Files//Microsoft Visual Studio//Common//Tools</p>
<p>DLL Universal Problem Solver</p>
<p>DLL Universal Problem Solver (DUPS) 工具用于审核、比较、记录和显示 DLL 信息。下表说明了组成 DUPS 工具的实用工具：</p>
<p>·Dlister.exe：该实用工具枚举计算机中的所有 DLL，并且将此信息记录到一个文本文件或数据库文件中。</p>
<p>·Dcomp.exe：该实用工具比较在两个文本文件中列出的 DLL，并产生包含差异的第三个文本文件。</p>
<p>·Dtxt2DB.exe：该实用工具将通过使用 Dlister.exe 实用工具和 Dcomp.exe 实用工具创建的文本文件加载到 dllHell数据库中。</p>
<p>·DlgDtxt2DB.exe：该实用工具提供 Dtxt2DB.exe 实用工具的图形用户界面(GUI)版本。</p>
<p>DLL影响</p>
<h1>文件修复</h1>
<p>1、用Windows系统盘功能进行文件修复；</p>
<p>2、若在此之前有一键备份过，可以重新还原；</p>
<p>3、从网上下载系统文件然后复盖到原文件夹里；</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/313885.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
