C++ 将qt DLL链接到多个可执行文件

C++ 将qt DLL链接到多个可执行文件,c++,windows,qt,dll,exe,C++,Windows,Qt,Dll,Exe,我在一个特定目录的不同子目录中有四个不同的.exe。所有程序都需要完全相同的.dll(Qt5Core、Qt5Gui和Qt5Widgets)。有没有一种方法可以将这三个.dll放在根目录中,而不必将它们复制到每个子目录中?是的,您使用的是Windows,您可以将根目录作为路径添加到环境变量中 计算机->属性->高级系统设置->环境变量 在Windows上搜索DLL路径的路径: 由于默认情况下启用了安全DLL搜索模式,因此顺序为 从中加载应用程序的目录 系统目录。使用GetSystemDirecto

我在一个特定目录的不同子目录中有四个不同的.exe。所有程序都需要完全相同的.dll(Qt5Core、Qt5Gui和Qt5Widgets)。有没有一种方法可以将这三个.dll放在根目录中,而不必将它们复制到每个子目录中?

是的,您使用的是Windows,您可以将根目录作为路径添加到环境变量中

计算机->属性->高级系统设置->环境变量

在Windows上搜索DLL路径的路径:

由于默认情况下启用了安全DLL搜索模式,因此顺序为

  • 从中加载应用程序的目录
  • 系统目录。使用GetSystemDirectory函数获取此目录的路径
  • 16位系统目录。没有获取此目录路径的函数,但会对其进行搜索
  • Windows目录。使用GetWindowsDirectory函数获取此目录的路径
  • 当前目录
  • PATH环境变量中列出的目录。请注意,这不包括应用程序路径注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用应用路径键
  • 因此,最简单的方法是确保从放置DLL(5.)的工作目录运行应用程序。这可以通过编写一个starter.bat文件来完成,该文件首先在那里导航,然后相对于DLL目录运行应用程序

    另一种方法是将DLL目录添加到starter.bat文件(6.)中的路径

    在这两种情况下,对于要运行的每个.exe,都需要一个包装器脚本

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


    也许还有一种使用的方法,但我不知道是否可以在Linux上复制和部署这些符号链接,或者是否需要在目标系统上创建它们