1

GTK# アプリを Windows で実行することができません。助けていただければ幸いです。グーグルで検索してみましたが、問題の解決策を見つけることができませんでした。

ボタンでウィンドウを開くだけの GTK# を使用して、monodevelop で小さなアプリを作成しました。Linuxで問題なく動作します。

ただし、Windowsで実行することはできません。GTK+ と GTK# 再頒布可能パッケージ、GTK# SDK をインストールしようとしましたが、それでも動作しません。また、(コマンド ラインで) スローされた例外は表示されません。これは、問題のデバッグに役立ちます。

.exe を呼び出した後、数秒間そこに留まり、その後シェルが再表示されて次のコマンドを待機し、何も出力されません。

GTK# アプリケーションを実行できるようにするには、未使用の Windows インストールに何をインストールする必要があるか教えてください。

[編集] これらを実行するのに mono が必要ないことは理解していますが、できれば避けたいと思っています。

4

4 に答える 4

2

Mono.Posix は、GTK# システムの必須部分です。これには、国際化されたテキストを処理するために使用される gettext ライブラリ インターフェイスが含まれています。MonoDevelop で記述することにより、GUI インターフェイスを作成するときに国際化されたテキストを許可するオプションがあり、生成された Build 関数の一部としてこのライブラリが自動的に呼び出されます (タイトルのように、ユーザーが表示するテキストを設定するときに呼び出されるようです)。形)。これは、完全な Mono ランタイムではなく、Mono.Posix.dll ライブラリ (Microsoft .NET で動作する) のみが必要であることを意味します。

于 2013-12-04T23:15:54.020 に答える
1

例外は stdout ではなく stderr に書き込まれている可能性があります。これは Windows コマンド ラインにデフォルトで表示されません。試す:

myapp.exe 2> my.log

my.log というログファイルにエラーが書き込まれるかどうかを確認します。

于 2012-10-07T16:18:46.487 に答える
1

あなたと同じように、私は Windows 10 で実行する際に問題がありました。私の場合の問題は、Mono.Posix 参照が実際に原因であると言及しているブログへの別の Google Result の後に解決されました。ただし、ブログでは、削除/変換も行う必要があることが示されていますglobal::Mono.Unix.Catalog.GetString(MonoDevelop の Stetic GUI クリエーターを使用している場合)。それらは通常あなたのラベルにあります。

すなわち:

dev@laptop:/tmp/myproject$ rg "global::Mono.Unix."
96:     this.label2.LabelProp = global::Mono.Unix.Catalog.GetString("25 ROUNDS OF DEAF");

に変更

96:     this.label2.LabelProp = "25 ROUNDS OF DEAF"

Stetic GUI 作成者は通常、部分クラス ファイルをプロジェクト ディレクトリのサブフォルダー gtk-gui に配置します。迷子をチェックするのに最適な場所です。ただしripgreprgそこで使用されるコマンドは、すべての子フォルダーの再帰的な高速ディレクトリ検索を行うため、それを使用することもできます)

この後、.NET 用の GTKSharp ランタイムをインストールする必要があります (現在、GTK2 とも呼ばれる GTK+ 用の mono-project.com のファイル gtk-sharp-2.12.45.msi です。GTK3 は異なり、将来の Google 社員にとっては異なる場合があります)。 )

その後、MonoDevelop でアプリケーションを再コンパイルすると、Windows で実行できます。

ステップのソース: https://www.martyndavis.com/?p=432

于 2020-01-02T23:21:56.560 に答える
0

実際には、アプリケーションは Windows で Mono (コンソール アプリなど) なしで実行できますが、コードで Mono.Posix への参照がある場合、Windows で実行できなかったプラットフォーム固有の関数を使用できます。Windows の MonoDevelop では、フレームワーク (Mono または MS.Net) を選択できます。MS.Net フレームワークを選択して、Win でアプリを再コンパイルしてみてください。

于 2012-10-08T18:04:30.440 に答える