3

所以,我只是做了一个标准的QtQuick 2应用程序,它有默认的Recangle,TextMouseArea. 所以,我只是尝试在发布模式下编译应用程序,看看它会生成什么文件,然后我尝试打开应用程序并发生了这种情况:

当我调整它的大小时,我可以看到空白:

但是,在调试中一切正常:

在此处输入图像描述

我正在使用 Qt 5.0.1 和 QtQuick2

更新

因此,在通过Dependency Walker运行它之后,似乎缺少三个文件:qt5quick.dllqt5gui.dllqt5core.dll. 我必须从某个地方手动添加它们吗?

当前目录结构为:

`test-build-Desktop_Qt_5_0_1_MSVC2010_32bit-Release/release
|+qml
 |+test
  |-main.qml
|-main.obj
|-moc_qtquick2applicationviewer.cpp
|-moc_qtquick2applicationviewer.obj
|-qtquick2applicationviewer.obj
|-test.exe
|-test.exe.embed.manifest

注意:我按照父目录中Nemanja Boric 的回答中的建议粘贴了 qml 目录,但这并没有解决问题!:(

另外,我的印象是,没有任何源代码(可能除了 JavaScript)不会与应用程序一起公开分发,而是以某种方式编译或打包在应用程序中(注意.cpp文件和qml目录)?

更新 2

从 Qt 5 Creator 内部运行时,该应用程序运行良好:

Starting [...]\test-build-Desktop_Qt_5_0_1_MSVC2010_32bit-Release\release\test.exe...
QOpenGLShader::link: "(41,18): warning X3206: implicit truncation of vector type

" 
[...]\test-build-Desktop_Qt_5_0_1_MSVC2010_32bit-Release\release\test.exe exited with code 0

好吧,除了那个尴尬的警告...

4

1 回答 1

3

您需要将 qml 文件复制到当前目录中。当您使用 QtCreator 创建发布应用程序时,您将拥有以下目录结构(或类似的东西):

example-build-Desktop_Qt_5_0_1_MSVC2010_32bit-Release
  |-     debug
  |-     qml
  |-     release // application executable is here

您需要做的是将qml文件夹复制到与可执行发布文件相同的目录中(只需将文件夹复制qmlrelease文件夹中)。

关于 dll 文件 - 您可以从文件夹中手动复制它们,QtInstallDir/bin或者您可以将该目录添加到PATH.

不需要发布cpp文件,但需要发布qml文件。你可以做什么,通过我从来没有成功,但似乎有可能将 qml 文件捆绑到资源文件中,并从资源中加载它,但这也可以很容易地提取 - 所以 -不要把你的逻辑或qml 文件中的机密信息

此外,您需要将所有需要的 dll 文件复制到带有 exe 的目录中:qt5quick.dll、qt5gui.dll、qt5core.dll 和 libEGL.dll。

于 2013-02-11T13:18:02.530 回答