我正在使用Visual Studio 2012构建QT 5.5应用程序。
注意,我使用CMake生成Visual Studio项目和解决方案文件。
如果我构建Release解决方案,当我运行.exe时,我得到一个错误,抱怨没有找到dll。我可以通过将所需的dll复制并粘贴到项目的Release目录中来修复此错误。
如何避免复制和粘贴所需的DLL?
我是否需要在Visual Studio中指定DLL和/或其路径?
有没有办法使用CMake指定DLL和/或它们的路径?
答案 0 :(得分:1)
为了提供Qt DLL以及您的应用程序,Qt自带的"com.lihaoyi" %%% "upickle" % "0.3.6",
工具可能就是您想要的。它知道Qt的插件等,可以复制相关的Qt DLL和插件。根据您要执行的操作,您可能希望将其作为构建后步骤,安装步骤或两者调用。还有适用于Mac OS X的scala> import upickle.default._
import upickle.default._
scala> write(1)
java.lang.ClassCastException: java.lang.Double cannot be cast to scala.scalajs.js.Any
at upickle.json.package$.write(package.scala:38)
at upickle.Types$class.write(Types.scala:125)
at upickle.default$.write(Api.scala:25)
... 35 elided
工具,但目前还没有相应的windeployqt
工具。
为了处理任何非Qt DLL中的复制,CMake的BundleUtilities
module可用于自动复制可执行文件/库所依赖的任何DLL。与Qt特定的部署工具不同,macdeployqt
适用于所有平台,但它对于在运行时动态加载的Qt插件一无所知。同样,使用linuxdeployqt
中的相关功能作为构建后和/或安装步骤。对于Qt4,DeployQt4
模块在内部调用BundleUtilities
,但CMake没有为Qt5提供等效模块,而是选择让Qt本身提供必要的支持。