2015-11-07 59 views
1

我在一个特定目录的不同子目录中有四个不同的.exes。所有的程序都需要完全相同的.dll(Qt5Core,Qt5Gui和Qt5Widgets)。有没有办法让这三个.dll只在根目录中,而不必将它们复制到每个子目录中?将qt dll链接到多个可执行文件

回答

1

Here you find the order其中在Windows上搜索DLL路径:

由于安全的DLL搜索模式是en默认体健,顺序是

  1. 从其中加载应用程序的目录。
  2. 系统目录。使用GetSystemDirectory函数获取此目录的路径。
  3. 16位系统目录。没有获得该目录路径的函数,但它被搜索。
  4. Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
  5. 当前目录。
  6. PATH环境变量中列出的目录。请注意,这不包括App Paths注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用App Paths键。

所以最容易做的事情是要确保你从你放置的DLL(5)的工作目录中运行你的应用程序。这可以通过编写一个首先在那里导航的starter.bat文件,然后相对于DLL direcory运行应用程序来完成。

另一种方法是将DLL目录添加到启动器.bat文件(6.)中的PATH中。

在这两种情况下,您都需要为每个要运行的.exe包装脚本。

如果可以确保指向应用程序的链接正确设置工作目录,则可以避免这种情况。如果您有一个安装程序为用户创建快捷方式,并且您知道用户不会通过右键单击.exe自行创建一个自己,那么这将起作用。


有可能还在使用hardlinks or junctions的方式,但我不知道你是否可以复制和部署在Linux上那些像符号链接,或者如果您需要在目标系统上创建它们。

0

是的,你使用的是Windows,你可以在环境变量下

计算机>属性 - >高级系统设置添加根目录的路径 - >环境变量

enter image description here

相关问题