在 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 路径的应用程序清单。
-
在 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 路径的应用程序清单。