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