将qt dll链接到多个可执行文件

时间:2015-11-07 09:22:39

标签: c++ windows qt dll exe

我在一个特定目录的不同子目录中有四个不同的.exes。所有程序都需要完全相同的.dll(Qt5Core,Qt5Gui和Qt5Widgets)。有没有办法让theese三个.dll只是在根目录中,必须将它们复制到每个子目录中?

2 个答案:

答案 0 :(得分:1)

在Windows上搜索DLL路径的

Here you find the order

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

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

因此,最简单的方法是确保从放置DLL的工作目录(5.)运行应用程序。这可以通过编写首先在那里导航的启动器.bat文件然后相对于DLL目录运行应用程序来完成。

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

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

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

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

答案 1 :(得分:0)

是的,您正在使用Windows,您可以将根目录添加为 Environment Varibles 中的路径

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

enter image description here