7

Mono フレームワークで Linux 用の小さなアプリケーションを書き始めています。アプリケーションは基本的に、ユーザーの操作が非常に少ない小さなキオスク フロントエンドになります。これは、100% テキスト/コンソール ベースの同じアプリケーションの以前のバージョンを置き換えるものです。

これは Raspberry Pi で実行されるため、X の実行を避け、アプリケーションがフレームバッファと直接通信するようにしたいと考えています。私は C# をよく知っているので、Mono フレームワークと C# を開発言語として使用することにしました。この場合、移植性は問題になりません。

ただし、Mono から Framebuffer にアクセスできる適切なライブラリとバインディングを見つけるのに苦労しています。ライブラリはGTK#すべて X11 インターフェースに明示的にバインドされており、いずれにせよ、ARM Soft-Float (armel) アーキテクチャ用に Debian Wheezy にビルド済みの GtkFB ライブラリはないようです。

Mono.Cairoライブラリは型を公開しますがDirectFBSurface、そのサーフェスのコンストラクターは 2 つのIntPtr引数を取り、文書化されていないため、フレームバッファーをカイロ サーフェスとして適切に初期化するためにコンストラクターに何を渡す必要があるかわかりません。

誰かが Mono と C# を使って Linux フレームバッファと通信したことがありますか? もしそうなら、初期化して FB への描画を開始するための基本的な例を提供したり、オンライン ドキュメントを参照して助けたりできますか?

更新 1

null次のコードを使用して、両方のコンストラクターパラメーターでDirectFBSurface をインスタンス化しようと思いました。

public static void Main(string[] args)
{
    // ...
    DirectFBSurface surface = new DirectFBSurface(((IntPtr)null), ((IntPtr)null));
    // ...
}

これにより、パラメーター値が許可されていないことを示す例外が生成されると予想していましたnullが、代わりに、DirectFBSurface が実装されていないかMono.Cairo、Debian Wheezy (armel) に同梱されているライブラリにコンパイルされていないように見えます。

Unhandled Exception: System.EntryPointNotFoundException: cairo_directfb_surface_create
  at (wrapper managed-to-native) Cairo.NativeMethods:cairo_directfb_surface_create (intptr,intptr)
  at Cairo.DirectFBSurface..ctor (IntPtr dfb, IntPtr dfb_surface) [0x00000] in <filename unknown>:0
  at Info.Insch.SandBox.TestCairo.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

したがって、このMono.Cairoアプローチはおそらく私のニーズには合わないようです。また、上記のように、GTK#Framebuffer ライブラリは、armel の Debian Wheezy の一部ではないようです。Mono から Linux フレームバッファにアクセスするために使用できるライブラリの別のセットはありますか?

4

1 に答える 1

2

The EntryPointNotFoundException you get, means that the symbol cairo_directfb_surface_create with (IntPtr, IntPtr) as arguments was not found in your libcairo.so.2 library from debian. This can likely be the case, if directfb was not enabled at compile time in cairo. You can check for directfb support in cairo by doing:

readelf -Ws /usr/lib/libcairo.so.2 | grep directfb

If the result (output) is empty, you lack directfb support. In this case you must recompile cairo with --enable-directfb argument passed to the configure script.

I've tested on an openSUSE 12.1 and Fedora 17 box, and both do not seem to ship directfb enabled cairo by default. I don't know about debian though, you will have to test yourself.

于 2012-09-16T07:17:02.917 に答える