在 windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?

On windows is it possible to get dll's to look for dependencies in another folder without using the PATH environment variable?

在 linux 我可以将共享库的 RPATH 设置为 $ORIGIN:$ORIGIN../lib。这告诉 DLL 在与共享库相同的目录以及 ../lib 文件夹中查找。我在 windows 上读到,您只需将 ../lib 的绝对路径(例如)添加到 PATH。这种方法有替代方法吗?我希望我的 dll 在 ../lib 文件夹中查找,但实际上并不希望它位于路径中。这可能吗?

如果主 DLL dynamic/delay-loads 依赖 DLL,它可以在加载它们之前调用 SetDllDirectory() (or better, AddDllDirectory())。

如果主 DLL 静态链接到从属 DLL,但 EXE dynamic/delay-loads 主 DLL,则 EXE 可以在加载主 DLL 之前调用 (Add|Set)DllDirectory()

否则,您将不得不:

  • 更新 %PATH% 环境变量。

  • 使用指定依赖 DLL 路径的应用程序清单。

  • 使用DLL Redirection