以下是上下文:
现在状态:
我被困住了,可能真的有点帮助。
答案 0 :(得分:5)
这是一个依赖性问题,您的程序无法加载其依赖项,将依赖项文件(DLL文件)复制到应用程序目录是一种临时方式,这是一种非常冒险的方式,您的应用程序可能会遇到目标计算机中的问题,如果目标机器上没有安装正确版本的Microsoft运行时库,您的应用程序无法正常运行,您可以使用Dependency Walker找到应用程序需要的依赖项(DLL文件)。
有两种方法可以解决这个问题:
第一个是在installshield中使用Microsoft Visual C++ 2010 Runtime组件(或者其他版本取决于您使用它编译的Runtime库的版本),用户可以静默安装它,或者使用其可执行二进制文件安装而不使用installshield ,然后将DLL文件复制到应用程序目录并分发它。
其次是使用静态编译方法来避免这样的问题,但是对于应用程序的静态编译,如果要将它分发到目标计算机上,则需要商业许可证。
在目标计算机上部署应用程序:
1)将Microsoft Visual C++ 2010 Runtime库放在您的应用程序文件夹中,以便用户将其安装在自己的计算机上。
2)从应用程序文件夹中的DLL files
文件夹复制应用程序所需的依赖项(Qt's bin
)(bin
文件夹路径:C:\Qt\Qt5.0.2\5.0.2\msvc2010\bin
)。
3)从应用程序文件夹中的imageformats
文件夹中复制Qt's plugins
文件夹(如果您在应用程序中使用任何图像资源文件)。
4)从应用程序文件夹中的platforms
文件夹中复制Qt's plugins
文件夹。
Qt的插件文件夹路径:C:\Qt\Qt5.0.2\5.0.2\msvc2010\plugins\
答案 1 :(得分:3)
Qt项目网站上有很多这样的话题。跟踪依赖关系只会告知编译时依赖性。还有动态加载的DLL,您不会收到任何错误,警告或任何错误。如果您使用库存构建DLL(不包括Qt5 * .dll),您需要的是:
Plus编译器运行时dll取决于您正在使用的构建版本。
如果使用桌面OpenGL支持而不是ANGLE并且没有webkit构建,则可以显着减少依赖关系。然后你只需要平台插件和你正在使用的Qt模块。
答案 2 :(得分:0)
只需将文件qt.conf添加到您的app目录,其中包含以下内容
[路径]
库=。/平台
然后将您可以在以下位置找到的子目录“平台”复制到同一app目录: C:\ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin
这就是全部。
这是有效的,因为qtcore.dll是使用qt安装的内部路径编译的。 (我不知道为什么!)。由于应用程序启动时ttconf始终由qtcore读取, 将包含“平台”中的图书馆,该应用程序将适用于任何主机。
警告:qtcore和platforms子目录必须来自同一个qt安装。