3

当我尝试执行简单的“HelloWorld”win32 控制台应用程序时,出现“找不到 dll:重新启动应用程序可能会解决问题”错误。我知道.dll 的位置。从命令提示符执行 .exe 时如何指定其位置?

PS:将.dll复制到.exe的当前目录似乎可以解决问题,但是这种方法不适合这种情况。

4

4 回答 4

5

DLL 加载发生在 Windows 的管道深处。

如果在与应用程序相同的目录中找不到 DLL,则会自动扫描 PATH 以找到该目录。

因此,解决问题的最简单方法是将包含 DLL 的目录添加到 PATH。根据您的代码何时需要加载 DLL,您可以(临时)从“HelloWorld”应用程序内部修改 PATH。

于 2009-03-29T09:07:05.300 回答
2

LoadLibraryEx的文档对Windows 如何搜索您的 dll 进行了一些讨论。如果可以构建 DLL 的完整路径或使用SetDllDirectory函数将目录添加到搜索路径,则可以尝试使用 LOAD_WITH_ALTERED_SEARCH_PATH 标志。

于 2009-03-29T09:12:10.810 回答
2

要手动,将您的路径永久添加到 Windows PATH(永久 = 直到您将其删除),右键单击我的电脑>属性>高级>环境变量>系统变量>路径>编辑>变量值,添加一个分号(这意味着“另外to all before") 并粘贴您的 dll 的完整路径。

每次在当前目录中找不到内容时,Windows 都会搜索路径。

于 2009-09-22T19:05:52.893 回答
1

来自:http: //msdn.microsoft.com/en-us/library/7d83bc18.aspx

对于隐式和显式链接,Windows 首先搜索“已知 DLL”,例如 Kernel32.dll 和 User32.dll。然后 Windows 按以下顺序搜索 DLL:

  1. 当前进程的可执行模块所在的目录。

  2. 当前目录。

  3. Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。

  4. Windows 目录。GetWindowsDirectory 函数检索此目录的路径。

  5. PATH 环境变量中列出的目录。

于 2014-03-20T09:31:51.867 回答