有没有在Windows / MSVC等于-rpath链接器标志一个?(Is there a Wind

2019-06-24 21:56发布

在Linux / GCC我可以使用-rpath标志更改共享库的可执行文件的搜索路径,而不与环境变量回火。

可这也可以在Windows上实现的呢? 据我所知,DLL是始终在搜索可执行文件的目录和路径。

我的情况:我想提出共享库的位置,根据它们的属性(32位/ 64位/调试/发布)没有采取独特的名称的照顾。 在Linux上,这是很容易地通过rpath的工作要做,但我还没有找到任何办法在Windows这样做呢。

感谢您的任何提示!

Answer 1:

可悲的是,没有直接模拟到RPATH。 有许多的选择的可能性,他们每个人最有可能不希望你以自己的特殊方式。

既然你需要一个不同的EXE为每个制作味道无论如何要避免运行时库发生冲突,您可能已经猜到最容易做的事情是把每一个exe文件在同一文件夹中的每个组DLL。

当你还提到,最普遍的方法是通过使用批处理文件来引导EXE改变PATH变量。

运行程序所需的DLL文件夹之前,结果反而可能改变当前的工作目录。

您可以使用该功能SetDllDirectory会或AddDllDirectory您的exe文件内。 这可能是最接近的RPATH,但只适用在WinXP SP1或更高版本。

如果你愿意改变的每一个EXE风味的文件名,你可以使用“应用程序路径”注册表项。 每一个exe文件都需要一个唯一的文件名。



Answer 2:

在Windows DLL的搜索顺序在描述该页面在MSDN上。 如果您在使用运行时动态链接 ,你可以当你调用指定的文件夹LoadLibrary



Answer 3:

“独立的应用程序”是用于嵌入描述DLL依赖的XML清单的机制。



文章来源: Is there a Windows/MSVC equivalent to the -rpath linker flag?