【发布时间】:2009-03-29 09:02:47
【问题描述】:
当我尝试执行简单的“HelloWorld”win32 控制台应用程序时,出现“找不到 dll:重新启动应用程序可能会解决问题”错误。 我知道.dll 的位置。 从命令提示符执行 .exe 时如何指定其位置?
PS:将.dll复制到.exe的当前目录似乎可以解决问题,但这种方法不适合这种情况。
【问题讨论】:
当我尝试执行简单的“HelloWorld”win32 控制台应用程序时,出现“找不到 dll:重新启动应用程序可能会解决问题”错误。 我知道.dll 的位置。 从命令提示符执行 .exe 时如何指定其位置?
PS:将.dll复制到.exe的当前目录似乎可以解决问题,但这种方法不适合这种情况。
【问题讨论】:
DLL 加载发生在窗口的深处。
如果在与应用程序相同的目录中找不到 DLL,则会自动扫描 PATH 以找到该目录。
因此,解决您的问题的最简单方法是将包含 DLL 的目录添加到您的 PATH 中。根据您的代码何时需要加载 DLL,您可以(临时)从“HelloWorld”应用程序内部修改 PATH。
【讨论】:
LoadLibraryEx 的文档对 Windows 如何搜索您的 dll 进行了一些讨论。如果您可以构建 DLL 的完整路径或使用 SetDllDirectory 函数将目录添加到搜索路径,则可以尝试使用 LOAD_WITH_ALTERED_SEARCH_PATH 标志。
【讨论】:
要手动将路径永久添加到 Windows PATH(永久 = 直到您将其删除),右键单击我的电脑>属性>高级>环境变量>系统变量>路径>编辑>变量值,添加分号(这意味着“除了之前的所有”)并粘贴您的dll的完整路径。
Windows 每次在当前目录中找不到东西时都会搜索路径。
【讨论】:
发件人:http://msdn.microsoft.com/en-us/library/7d83bc18.aspx
对于隐式和显式链接,Windows 首先搜索 “已知 DLL”,例如 Kernel32.dll 和 User32.dll。窗户然后 按以下顺序搜索 DLL:
当前进程的可执行模块所在目录。
当前目录。
Windows 系统目录。 GetSystemDirectory 函数检索此目录的路径。
Windows 目录。 GetWindowsDirectory 函数检索此目录的路径。
PATH 环境变量中列出的目录。
【讨论】: