7

Gecko は Firefox のレンダリング エンジンです。gecko-sharp を使用すると、任意の Mono/GTK# プログラムに埋め込むことができます。これを行うためのGladeSharpBrowserというサンプル アプリケーションがあります。変更したプロジェクト ファイルを使用してビルドすることはできましたが、クラッシュしています。これは問題を再現するのに役立ちます:

SharpDevelop 3.0チュートリアルを使用して、 Mono 2.2インストールでセットアップしました。ProcMon を使用して、コンパイルのために Mono の gmcs を呼び出すことを確認しました。SharpDevelop をセットアップした後、BrowserSharp.csprojを変更して、Mono でコンパイルする必要がありました。

次の警告メッセージもあります。

同じ依存アセンブリの異なるバージョン間で競合が見つかりました。

すべてのアセンブリが Mono によって提供されるものであるため、これは奇妙です。

確かに、GeckoFX のような方法は他にもありますが、Mono を使用してプラットフォームに依存しない方法で行うことに特に興味があります。

4

2 に答える 2

2

相互互換性の問題に対するおそらくより良い答えは Mono.WebBrowser です。最終的にはエンジンに依存しない可能性があるためです。

http://www.mono-project.com/WebBrowser

于 2009-02-12T11:50:32.797 に答える
1

問題を解決するための最初のステップは、クラッシュの原因を突き止めることです。あなたの指示に従ってBrowserSharpを構築した後(csprojを個別に再作成しましたが)、次を実行しました:

mono --debug BrowserSharp.exe

--debug フラグを使用すると、mono は未処理の例外を出力します。

未処理の例外: System.TypeInitializationException:
Gecko.WebControl の型初期化子によって例外がスローされました --->
System.DllNotFoundException: gtkembedmoz.dll   
   at (wrapper managed-to-native) Gecko.WebControl:gtk_moz_embed_get_type ()
   ...

Mono ディストリビューションに gtkembedmoz.dll が見つかりませんでしたが、個別にインストールされているようです。ダウンロード リンクはここにあります

安定した GRE パッケージをダウンロードし、gtkembedmoz.dll をビルド ディレクトリにコピーしました。それでもクラッシュしたので、depends.exeを使用して依存関係を確認したところ、Gtk+ ライブラリが欠落していることが明らかになりました。gtk-sharpランタイムをインストールし、不足している dll をビルド ディレクトリにコピーした後、Microsoft .NET ランタイムを使用して実行することができました。

何らかの理由で、Mono を使用してもまだ機能しませんでした。Mono がアンマネージ DLL を検索する方法に違いがあると思われますが、これについては調べていません。Microsoft.NET の Mono を使用するかどうかに関係なく、おそらくこれらの DLL をビルド ディレクトリにコピーする必要はありません。適切にインストール/構成されていることを確認して、見つけられるようにするだけです。

于 2009-02-12T11:08:30.633 に答える