所以,我刚刚创建了一个标准的QtQuick 2
应用程序,它有默认的Recangle
,Text
和MouseArea
。所以,我只是尝试在发布模式下编译应用程序,看看它会生成什么文件,然后我尝试打开应用程序,这发生了:
当我调整大小时,我可以看到空格:
然而,它在调试中都能正常工作:
我正在使用Qt 5.0.1和QtQuick2
因此,在通过Dependency Walker运行后,似乎缺少三个文件:qt5quick.dll
,qt5gui.dll
和qt5core.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's answer中的建议从父目录粘贴了qml目录,但这并没有解决问题! :(
此外,我的印象是,没有任何来源(除了JavaScript之外)不会与应用程序一起公开分发,而是以某种方式编译或打包在应用程序中(注意.cpp
文件和qml
目录??
从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
嗯,除了那个尴尬的警告......
答案 0 :(得分:3)
您需要将qml文件复制到当前目录中。使用QtCreator创建发布应用程序时,您将拥有此目录结构(或类似内容):
example-build-Desktop_Qt_5_0_1_MSVC2010_32bit-Release
|- debug
|- qml
|- release // application executable is here
您需要做的是将qml
文件夹复制到与可执行版本文件位于同一目录中(只需将qml
文件夹复制到release
文件夹中)。
关于dll文件 - 您可以从QtInstallDir/bin
文件夹手动复制它们,或者您可以将该目录添加到PATH
,如果您在该计算机上进行开发 - 可能会更容易。
您不需要发布cpp文件,但需要发布qml文件。你可以做什么,通过我永远不会成功,但似乎可能是将qml文件捆绑到资源文件,并从资源加载它,但也可以轻松提取 - 所以 - 不要把您在qml文件中的逻辑或机密信息。
此外,您需要使用exe:qt5quick.dll,qt5gui.dll,qt5core.dll和libEGL.dll将所有必需的dll文件复制到目录中。