8

Qtを使用してクロスプラットフォームの C++ プログラムを作成しており、プログラム内に多数のバイナリ実行可能ファイルをパッケージ化/埋め込みたいと考えています。プログラムは実行時にこれらのバイナリを実行できる必要があります。

start() と「:/...」表記を使用して QResource と QProcess が必要になると思いましたが、プロセスが実行されていないようです。不足しているものはありますか?このように動作する必要がありますか?バイナリを実行可能として設定する必要がありますか?

背景: 私はGitを使用するツールを作成していますが、エンド ユーザーが Git を手動でインストールする必要はありません。

(ところで、Mac OS Xでこれを試しています。)

アップデート:

次のコードを使用しています (C++、Mac OS X の Qt):

QString program = ":/git";
QStringList arguments;
arguments << "help" << "commit";
myProcess->start(program, arguments);

Git 実行可能ファイルはプロジェクト パスにあり、私の resources.qrc は次のように参照します。

<qresource prefix="/">
    <file>git</file>
</qresource>

エラーは出ていませんが、プログラムは実行されません。program存在しないファイルに設定した場合の動作は同じです。git への絶対パスで置き換える":/git"と、完全に機能します。

4

4 に答える 4

10

リソースから直接プログラムを実行することはできません。

リソースにプログラムがあり、それを実行したい場合は、最初にリソースからプログラムを読み取り、ファイルに書き込み、ファイルを実行可能にしてから実行する必要があります。

また、エラーが発生していないと言う場合は、エラーを適切にチェックしていないことを意味している可能性があります。

于 2009-12-21T23:02:56.107 に答える
2

リソースが機能しないと思います。プロセスはオペレーティング システムによって作成され、リソースはアプリケーションによって処理されます。

考えられる解決策の 1 つは、追加の実行可能ファイルをアプリケーション ディレクトリのどこかにバンドルし、そのパスから実行することです。

于 2009-12-21T19:09:37.767 に答える
0

問題は、リソースから git 実行可能ファイルを抽出することではなく、それを実行することではないようですか?

git プログラムはドン ディスクを正しく生成します。権限を確認できますか?

于 2009-12-21T22:45:58.283 に答える