QyotoでWindowを表示してみる

ここ数日、気まぐれでQyotoというQtの.NETバインディングを試している。とりあえず空のWindowを表示するまでで苦労したので、メモっておく。

インストールするもの

  • Qt libraries 4.8.4 for Windows (minGW 4.4)
    • Qyoto 4.0.6が依存しているのがMinGW版のQt4.8みたい
    • インストール時にMinGW入ってねーぞと怒られる場合があるけど、気にしないでもOK
  • Qyoto 4.0.6 Windows用バイナリ

コード

  1. Visual Studioでは「Windowsアプリケーション」、Xamarin Studioでは「GUI実行可能ファイル」としてビルドするプロジェクトを用意する。
  2. ビルド設定でプラットフォームターゲットをx86にする(VisualStudioの場合、デフォルトはAnyなので注意)
  3. Qyoto/lib/qyoto-qtcore.dll と Qyoto/lib/qyoto-qtgui.dll を参照に追加
  4. 以下のコードを書く
using System;
using QtCore;
using QtGui;

namespace QyotoSample
{
    class MainClass : QWidget 
    {
        public MainClass() 
        {
            WindowTitle = "test";
            Show();
        }

        [STAThread]
        public static int Main (string[] args)
        {
            new QApplication(args);
            new MainClass();
            return QApplication.Exec();
        }
    }
}

依存ライブラリ

このコードをビルドしただけだと動かないので、以下のDLLをexeと同じディレクトリかPATHの通った場所に置く。どうせ配布時には同梱しないといけないので、プロジェクトに含めてしまってもいいかも。

  • Qt/4.8.4/bin
    • libgcc_s_dw2-1.dll
    • mingwm10.dll
    • QtCore4.dll
    • QtGui4.dll
  • Qyoto/bin
    • qyoto-qtcore-native.dll
    • qyoto-qtgui-native.dll
    • smokebase.dll
    • smokeqtcore.dll
    • smokeqtgui.dll

当然のことながら、QtNetworkなどのAPIが使いたい場合はそれっぽい名前のDLLを追加する必要あり。