前のページ次のページ上に戻るホーム SophiaFramework 2.2

2.5. 開発の手順

ここでは、SophiaFramework 2.2 を使用した開発の手順について解説します。

2.5.1. 開発環境

SophiaFramework 2.2 で開発を行うには、 次の開発環境が必要です。

  • BREW SDK 2.0.1.5J または BREW SDK 2.1.1.1J
  • Microsoft Visual C++ 6 (SP5 以降)
  • ARM Developer Suite 1.1

本製品の ARM 用ライブラリは、ARM Developer Suite 1.1 でビルドされています。 RealView Compilation Tools for BREW 用のライブラリが必要な場合は、 弊社までご連絡ください。

2.5.2. エミュレータ用の開発環境

2.5.2.1. Visual C++ の環境設定

SophisFramework の開発をはじめる前に、 Visual C++ の環境設定を行う必要があります。 この環境設定は一度だけ行えばよいです。

SophiaFramework パッケージの配置.

SophiaFramework のパッケージをファイルシステム上に配置します。 ここでは C:\SophiaFramework に配置することにします。

インクルード ディレクトリの設定.

Visual C++ を起動し、 メニューの [ツール]-[オプション] から [オプション] ダイアログを表示し、その [ディレクトリ] タブを選択します。 [表示するディレクトリ] コンボボックスから [インクルード ファイル] を選択し、 [ディレクトリ] に SophiaFramework のインクルード ディレクトリを設定します。 ここでは C:\SophiaFramework\Include としています。

ライブラリ ディレクトリの設定.

同じく Visual C++ の [オプション] ダイアログを表示し、 その [ディレクトリ] タブを選択します。 [表示するディレクトリ] コンボボックスから [ライブラリ ファイル] を選択し、 [ディレクトリ] に SophiaFramework のライブラリ ファイルが存在するディレクトリを設定します。 ここでは C:\SophiaFramework\Lib としています。

2.5.2.2. Visual C++ プロジェクトの作成

SophiaFramework アプリケーションは、 BREW Application Wizard を使用して雛形を作成することができます。 ここでは MyApp という名前のプロジェクトを作成します。

BREW Application Wizard の起動.

Visual C++ を起動し、メニューの [ファイル]-[新規作成] を選択します。 [プロジェクト] タブから [BREW Application Wizard] を選択し、 [プロジェクト名] を入力して BREW プロジェクトを作成します。

BREW Application Wizard の詳細については BREW SDK のドキュメントを参照してください。 必要に応じて MIF Editor を起動し、BID の作成、 MIF ファイルの設定を行います。

不要なファイルの削除.

BREW Application Wizard は、 プロジェクトに AEEAppGen.c AEEModGen.c MyApp.c というファイルを追加します。 SophiaFramework アプリケーションではこの 3 つのファイルは不要ですので、 プロジェクトから削除してください。

ライブラリの設定.

メニューの [プロジェクト]-[設定] を選択し、 [プロジェクトの設定] ダイアログの [リンク] タブで、 [オブジェクト/ライブラリ モジュール] ボックスに、 SophiaFrameworkBrew210.lib と入力します。

アプリケーション クラスの実装.

SophiaFramework のアプリケーション クラスを実装します。 MyApp.cpp というソースファイルを作成し、 下記のようなコードを記述します。

//
//  MyApp.cpp
//
#include <SophiaFramework.hpp>
#include "MyApp.bid"

class MyApp : public SFRApplication
{
public:
    static SFCInvokerPtr Constructor() { return new MyApp; }

private:
    MyApp (Void)         { return; }
    virtual ~MyApp(Void) { return; }
};


SFCInvokerSPP SFCApplet::Boot(AEECLSID id)
{
    if (id == AEECLSID_MYAPP) {
        return MyApp::Constructor;
    }
    else {
        return NULL;
    }
}

ビルド.

プロジェクトをビルドします。 ここで次のようなリンカ警告が出る場合がありますが、 この警告は無視して構いません。

LINK : warning LNK4098: defaultlib "LIBCD" は他のライブラリの使用と競合しています

エミュレータの起動.

ビルドで作成された MyApp.dll と MyApp.mif を エミュレータのアプレット ディレクトリに格納して エミュレータを起動します。 MyApp アプレットを選択して起動し、 真っ白な画面が表示されればビルドは成功です。 何も動作していないように見えますが、 実際には SophiaFramework アプリケーションが動作しています。

2.5.3. 実機用の開発

ここでは実機用の開発について説明します。 ARM Developer Suite がインストールされていることを前提とします。

2.5.3.1. Visual C++ BREW アドインの設定

Visual C++ のメニューから [ツール]-[カスタマイズ] を選択し、 [カスタマイズ] ダイアログの [アドインおよびマクロ ファイル] タブを表示し、 [ARMMakeBREWApp.DSAddIn.1] にチェックを入れます。

これにより、ARM コンパイラ用のメイクファイルを生成するボタンを乗せた ツールバーが現れます。

2.5.3.2. 実機用のコンパイル

メイクファイルのエクスポート.

Visual C++ BREW アドインのツールバーから、 [GenerateARMMakefile] ボタンを押します。 これによりプロジェクト ディレクトリに MyApp.mak ファイルが生成されます。

メイクファイルの編集.

メイクファイルに SophiaFramework 用の設定を追加する必要があります。 MyApp.mak ファイルをテキストエディタで開き、 APP_INCLUDES 変数にインクルード パスを追加します。

APP_INCLUDES   = -I "$(BREWDIR)\inc" -I "C:\SophiaFramework\Include"

また、APP_OBJS 変数に ARM 用のライブラリを追加します。 BREW SDK 2.1 を使用している場合は SophiaFrameworkBrew210.a を、BREW SDK 2.0 を使用している場合は SophiaFrameworkBrew200.a をリンクします。

APP_OBJS =  $(OBJS) "C:\SophiaFramework\Lib\SophiaFrameworkBrew210.a"

この他に --no_inlinemax コンパイラ オプションを指定することを推奨します。 ARM コンパイラによってはインライン展開の基準が厳しすぎるために、 標準のコンパイル オプションでは十分なインライン展開が行われず、 速度が遅くなることがあります。 --no_inlinemax オプションを指定することにより、 inline 指定された関数が最大限に展開されるようになります。

#OPT = -Ospace -O2      # Full compiler optimization for space
OPT = -Ospace -O2 --no_inlinemax

メイクの実行.

Visual C++ のメニューから [ツール]-[BREW ARM Make] を選択します。 これにより、MyApp.mak ファイルに基づいてメイクが実行されます。 プロジェクトのディレクトリに .mod ファイルが生成されていればメイクは成功です。 メイク時にエラーがあれば、Visual C++ のアウトプット ウィンドウに表示されますので、 エラーを確認してください。

2.5.4. BREW SDK 2.0 で開発を行う場合

デフォルトでは、SophiaFramework は BREW SDK 2.1 とともに使用することを前提としていますが、 BREW SDK 2.0 とともに使用することもできます。 そのためには、#define 指令で SFMBREWVERION マクロを定義し、 その値を 200 としてください。

#define SFMBREWVERSION  200
#include <SophiaFramework.hpp>

コンパイラ オプションに -DSFMBREVERSION=200 を指定する方法でも構いません。

また、リンクするライブラリは、 エミュレータ用のライブラリ SophiaFrameworkBrew200.lib や実機用のライブラリ SophiaFrameworkBrew200.a を使用してください。

2.5.5. KDDI 拡張インターフェイスを使用する場合

SophiaFramework には KDDI 拡張インターフェイスのラッパークラスが 用意されていますが、デフォルトでは使用できないようになっています。 使用するためには、 SophiaFramework.hpp をインクルードする前に、 SFMKDDIEXTENSION マクロを定義してください。

#define SFMKDDIEXTENSION
#include <SophiaFramework.hpp>

コンパイラ オプションに -DSFMKDDIEXTENSION を指定する方法でも構いません。