在linux上,我们有LIBRARY_PATH
和LD_LIBRARY_PATH
个环境变量,以便程序搜索库。我们在窗户上有类似的东西吗?特别是Windows 7?
此外,我想知道DLL使用的最佳实践(在哪里放置它们,使用envs或不使用envs等),因为我想像所有人一样在Windows上工作,而不是懒散于工作区:)
答案 0 :(得分:12)
This MSDN article解释了默认搜索顺序。我引用:
在(1)中,如果你静态链接DLL的存根库,我认为“lpFileName指定的目录”是进程的exe路径。
答案 1 :(得分:1)
查看LoadLibrary和CreateProcess功能的帮助。这些描述了用于定位DLL的路径,以及如何修改它们。
答案 2 :(得分:0)
它首先在currentDir上查找,然后在你的路径中查看WinDir和SystemDir
答案 3 :(得分:0)
根据@andrew在回答中提到的内容,Windows用来搜索DLL的文件夹的顺序可能与一种配置不同。我认为在Windows上检查此顺序的最简单方法是使用Dependency Walker工具。打开工具并按下工具栏上的“配置模块搜索顺序”按钮后,您将看到一个类似这样的窗口:
此窗口显示您机器上的当前搜索顺序。有趣的是,通过按“扩展”,您可以在搜索路径中一个一个地查看整个文件夹。您也可以根据需要更改顺序,以用于加载特定模块。