C++ Qt(MSVC2010)-仅在安装了Qt的计算机上找到依赖项

C++ Qt(MSVC2010)-仅在安装了Qt的计算机上找到依赖项,c++,qt,C++,Qt,完整的故事:这里有人有完全相同的问题: 短篇故事和问题: 在SDK的安装过程中,Qt安装程序是否设置了任何内容?我的应用程序仅在安装了Qt的机器上工作(C:/Program Files/Qt)。我检查了env变量,但与Qt无关 感谢您的帮助。Qt(在Windows上)安装其DLL,并将包含DLL的文件夹添加到路径变量中。您可以在应用程序的基础上提供DLL二进制文件。嗯,有两种方法:简单的方法和正确的方法。最简单的方法是将应用程序所需的所有DLL(即尝试启动应用程序时出现在错误消息中的所有DLL)

完整的故事:这里有人有完全相同的问题:

短篇故事和问题:

在SDK的安装过程中,Qt安装程序是否设置了任何内容?我的应用程序仅在安装了Qt的机器上工作(C:/Program Files/Qt)。我检查了env变量,但与Qt无关


感谢您的帮助。

Qt(在Windows上)安装其DLL,并将包含DLL的文件夹添加到
路径
变量中。您可以在应用程序的基础上提供DLL二进制文件。

嗯,有两种方法:简单的方法和正确的方法。最简单的方法是将应用程序所需的所有DLL(即尝试启动应用程序时出现在错误消息中的所有DLL)复制到应用程序可执行文件所在的同一文件夹中。这应该行得通,但那太难看了

正确的方法是对Qt进行静态构建,并使用它编译应用程序。以这种方式构建的静态应用程序将是可移植的,因为您可以在任何机器上启动它。在文档或(基本上它只需要使用
-static
标志编译Qt)中描述了为Qt的静态版本编写BIL的过程,以及在其他一些方面

在的安装过程中,Qt安装程序是否设置了任何内容 SDK

对。在安装过程中,Qt的原始路径硬编码为QtXXX.dll。因此,在某些情况下,有必要使用
qt.conf
文件

有关更多信息,请访问以下链接:


我检查了PATH变量,没有对QTL的引用。DLL不是安装在一个已经存在的文件夹中,比如
Windows\System32
?那么Qt安装程序就不需要触摸路径了。我使用Qt4.8,他们可能在该版本之后对其进行了更改……但是,如果OP使用它(而不是商业版本),静态版本不符合LGPL许可证的要求。@Melebius,我认为如果OP的应用程序是开源的,也可以使用它?无论如何,如果他不想要它,他总是可以复制dllsI。我认为它必须是GPL,而不仅仅是更广义的开源。我在C:\Qt\5.4\msvc2010\u opengl\plugins中复制了DLL,但幸运的是,在你的环境中没有这些路径。瓦尔斯。但您可以在.exe和.dll文件中找到这些路径(在Windows编译的结果中)。通常的Qt程序知道开发人员计算机上所有Qt的.dll文件的完整路径。@Ilya你错了。程序不知道。此路径存储在
Qt5Core.dll
中。所以,只有解析了
Qt5Core.dll
,应用程序才知道开发人员机器上的路径。否则-不是。有没有办法在qt5core.dll中定义此路径?qt5core.dll在预构建时如何知道路径?这将解释为什么即使所有dll文件都复制到同一个目录,也不执行exe?实际上,这间接解决了我的问题,因为知道路径是硬编码的!谢谢你!