Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 运行生成时,QT未包含正确的库_Windows_Qt_Dll - Fatal编程技术网

Windows 运行生成时,QT未包含正确的库

Windows 运行生成时,QT未包含正确的库,windows,qt,dll,Windows,Qt,Dll,我正在使用QtCreator 5.2.1(32位)和Mingw构建一个程序。该程序的一个依赖项是libcurl库 QT正确地构建了文件,但是在运行时,它会抛出一个错误139 在二进制文件上运行依赖项遍历程序后,我注意到libcurl dll又依赖于另一个名为“libeay32.dll”的dll 我做了以下工作: 复制了“我的程序”以及所有必需的库(包括 libeay32.dll)并运行它(这是成功的) 之后,我尝试从QT内部运行,但在运行之前在构建中有libeay32库(这是成功的) 从逻辑

我正在使用QtCreator 5.2.1(32位)和Mingw构建一个程序。该程序的一个依赖项是libcurl库

QT正确地构建了文件,但是在运行时,它会抛出一个错误139

在二进制文件上运行依赖项遍历程序后,我注意到libcurl dll又依赖于另一个名为“libeay32.dll”的dll

我做了以下工作:

  • 复制了“我的程序”以及所有必需的库(包括 libeay32.dll)并运行它(这是成功的)
  • 之后,我尝试从QT内部运行,但在运行之前在构建中有libeay32库(这是成功的)
从逻辑上讲,我后来假设,如果我将libeay32的路径放在path变量中任何其他路径之前,它将提取lib的正确版本(re:问题的答案)。但是这不起作用,抛出相同的错误139(显然找不到库)

我知道我可以通过简单地将文件复制到我的工作目录来运行和测试我的程序,但是,出于信息目的,我想知道

是否有任何方法可以在不复制此DLL的情况下执行此操作

我的直觉是,首先修复指向此的路径会有所帮助,因为这将确保在其他目录中可能出现的任何其他事件之前使用DLL

注意:在引用PATH变量时,我指的是系统路径和检查Qt使用的路径(Qt向路径添加了一些dir)


提前感谢您的帮助。

您可以链接static,也可以确保您的库位于以下位置之一():

  • 从中加载应用程序的目录
  • 当前目录
  • 系统目录。使用GetSystemDirectory函数获取此目录的路径
  • 16位系统目录。没有获取此目录路径的函数,但会对其进行搜索
  • Windows目录。使用GetWindowsDirectory函数获取此目录的路径
  • PATH环境变量中列出的目录。请注意,这不包括应用程序路径注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用应用路径键
“Qt”不会向路径添加任何内容,“Qt”也不会构建任何内容。Qt Creator在构建或运行项目之前会修改PATH变量。你可以控制这些变化。qmake生成makefile。乔姆负责建筑。请不要混淆Qt创建者、qmake、jom和Qt。它们分别是独立IDE、makefile生成器、并行make和应用程序开发框架。