2

ここ数週間、アプリケーションを適切にデプロイするのに苦労しており (これは趣味です)、他に何を試せばよいのかわかりません。

Applications -> Qt Quick 2 Application (Built-in Elements) を選択して、Qt Creator (2.6.1) で新しいプロジェクトを開始しました。QML を微調整して、背景を青、テキストを赤にしました。

main.qml

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    color: "blue" // Added!
    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent
        color: "red" // Added!
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

Qt 5.0.1 と x86 MSVC 2010 コンパイラを使用しています。リリース バージョンをビルドしたところ、QtCreator で問題なく動作しました。コンパイラの詳細が必要な場合は、投稿します。

デプロイするために、デスクトップに新しいフォルダーを作成し、H :\Qt\Qt5.0.1\5.0.1\msvc2010\qml* のすべてをRelease HelloWorld.exe 実行可能ファイルと共にコピーしましたHelloWorld/H:\Qt\Qt5.0.1\5.0.1\msvc2010\bin\*H:\Qt\Qt5.0.1\5.0.1\msvc2010\plugins\*

やり過ぎ?はい。しかし、私は必死です。

Windows 7 64 ビットで HelloWorld/HelloWorld.exe を実行すると、アプリケーションは正常に動作します。しかし、この HelloWorld/ フォルダーを Windows XP 32 ビットを実行している仮想マシンにコピーすると、適切なサイズのウィンドウが表示されますが、何も表示されません (白、テキストなし)。ウィンドウの中央をクリックすると、ウィンドウが閉じます。

そのため、実行ファイルを Dependency Walker にロードしましたが、異常は見られませんでした (もちろん、IESHIMS.DLL と WER.DLL は欠落していました)。Start Profile を実行したところ、多数の赤いエラーが表示されました。

GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") は、アドレス 0x78ABBA3B の "MSVCR100.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") は、アドレス 0x78ABBA48 の "MSVCR100.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") は、アドレス 0x78ABBA55 の "MSVCR100.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") は、アドレス 0x78ABBA62 の "MSVCR100.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

LoadLibraryExW("C:\documents and settings\owner\desktop\helloworld\platforms\qminimald.pdb", 0x00000000, DONT_RESOLVE_DLL_REFERENCES) が NULL を返しました。エラー: %1 は有効な Win32 アプリケーションではありません (193)。

LoadLibraryExW("C:\documents and settings\owner\desktop\helloworld\platforms\qwindowsd.pdb", 0x00000000, DONT_RESOLVE_DLL_REFERENCES) が NULL を返しました。エラー: %1 は有効な Win32 アプリケーションではありません (193)。

GetProcAddress(0x7E410000 [USER32.DLL], "UpdateLayeredWindowIndirect") は、アドレス 0x013A8749 の "QWINDOWS.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C9C0000 [SHELL32.DLL], "SHCreateItemFromParsingName") は、アドレス 0x013A8997 の "QWINDOWS.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C9C0000 [SHELL32.DLL], "SHGetStockIconInfo") は、アドレス 0x013A89C9 の "QWINDOWS.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x7C800000 [KERNEL32.DLL], "GetTickCount64") は、アドレス 0x670726A7 の "QT5CORE.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x755C0000 [MSCTFIME.IME], "ImeGetImeMenuItems") は、アドレス 0x76397354 の "IMM32.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

GetProcAddress(0x4FDD0000 [D3D9.DLL], "Direct3DCreate9Ex") は、アドレス 0x01487198 の "LIBEGL.DLL" から呼び出され、NULL を返しました。エラー: 指定されたプロシージャが見つかりませんでした (127)。

デバッグ バージョンも実行しようとしましたが、MSVC100 dll の 64 ビット バージョンしかないため、それらを XP マシンにコピーできません (再配布可能な 32 ビット バージョンしか実行できません)。問題を解決するために使用できる他のツールがわかりません。

何かばかげたことをしているに違いないことはわかっていますが、インターネット上で役立つものは何も見つかりません。Qt アプリケーションの開発に多くの時間を費やし、それをデプロイしようとして行き詰まってしまうのは、本当にイライラします。

このプログラムは、Windows 7 32 ビット仮想マシンで問題なく動作することに注意してください (MSVC2012 再頒布可能パッケージがインストールされた後)。

私が本当に実行したいアプリケーションは、Windows XP で非常に奇妙に動作します。最初に実行すると、ウィンドウのサイズが適切になり、いくつかのテキスト文字列が表示されます。ただし、Rectangle{} 要素は表示されません。コーヒーを淹れる間、アプリを数分間実行したままにしました。コンピューターに戻ると、テキスト カーソルのビートに合わせて、ウィンドウがランダムな図形とテキストで点滅していました。それは一体何ですか?基本的な数学関数が台無しになっているように見えたため、インターフェイスの一部が不適切なサイズと位置で表示されていました。マウス カーソルが 1 回点滅するだけで実際のインターフェイスが表示されることも確認できました (もちろん、マウス カーソルのビートに合わせてランダ​​ムな形状が表示されたり消えたりします)。

気まぐれに、アプリケーションを使用して (テキスト ボックスが存在することがわかっている場所をクリックする)、リストの 1 つに入力してみましたが、うまくいきました。グラフィックを除いて、アプリケーションは完全に正常に動作しています。Qt 5.0 が OpenGL 処理の一部を作り直したのは知っていますよね? これはバグでしょうか、それともインストールしていないライブラリでしょうか?

4

3 に答える 3

0
  1. Microsoft Visual C++ 2010 Redistributable Package (x86) をクライアント マシン (windows xp) にインストールします。
  2. デバッグビルドではなく、リリースビルドを使用してください。デバッグ版を使用しているようです。
  3. OpenGL を使用しないでください (ほとんどの XP ユーザーは、OpenGL のバージョンが更新されていることに気付いている可能性があります。そうでない場合は、強制的にアップグレードする必要があります。)

更新 Windows XP の OpenGL を使用します。ユーザーは OpenGL ドライバーをインストールまたはアップグレードする必要があります。これを読んでください

于 2013-07-07T13:01:47.307 に答える
0

ANGLE を使用して Qt 5.1 rc1 でビルドされた Windows XP にクイック 2.0 アプリケーションをデプロイするときにも、同じ問題に遭遇しました。ANGLE の問題のようです。http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL では、XP にOPENGLを使用することをお勧めします。 WindowsXP

于 2013-07-05T14:16:23.220 に答える