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

21.4. KDDI 社提供 BREW 日本拡張パッケージ

21.4.1. 前提条件

KDDI 社 BREW 日本拡張パッケージおよび その KDDI 社 BREW 日本拡張パッケージ C++ ラッパークラス(SophiaFramework UNIVERSE オプション) をインストールしていることが前提条件になります。

SophiaFramework UNIVERSE では、KDDI 社提供 BREW 日本拡張パッケージ C++ ラッパークラスを用意しておりますが、 標準では使用できないようになっています。

KDDI 社 BREW 日本拡張パッケージ C++ ラッパークラスは、 KDDI MSP 会員である SophiaFramework UNIVERSE 製品ユーザーにだけ公開されています。

[Note] KDDI 社 BREW 日本拡張パッケージの入手先

KDDI 社 BREW 日本拡張パッケージは、下記サイトにて KDDI MSP 会員として認定されることにより入手可能です。

KDDI MSP(KDDI モバイルソリューションパートナー) URL:http://www.k-mb.biz/

21.4.2. BREW 日本拡張パッケージ C++ ラッパークラスの使用方法

21.4.2.1. BREW 日本拡張パッケージ C++ ラッパークラスのインストール

BREW 日本拡張パッケージ C++ ラッパークラスのインストールは、 以下の手順で行います。

  1. KDDI 社日本拡張パッケージのファイルを BREW SDK のインクルードフォルダにコピーします。
  2. SophiaFramework○○○KDDI.zip(○○○はバージョンを表す)という名のファイルに格納されている、 BREW 日本拡張パッケージ C++ ラッパークラスのヘッダーファイルとライブラリファイルを以下のフォルダにコピーします。
    1. "SophiaFramework○○○KDDI\IncludeKDDI" フォルダ内のヘッダーファイルは、
       "(SophiaFramework UNIVERSE インストール先フォルダ)\Include" フォルダにコピーします。
    
    2. "SophiaFramework○○○KDDI\LibraryKDDI" フォルダ内のライブラリファイルは、 
       "(SophiaFramework UNIVERSE インストール先フォルダ)\Library" フォルダにコピーします。
    
  3. Microsoft Visual Studio 用キーワードファイル "usertype.dat" をバージョンに応じて以下のフォルダにコピーします。
    ■ Microsoft Visual Studio 6.0 の場合: "C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin" フォルダ
    
    ■ Microsoft Visual Studio .NET 2003 の場合: "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE" フォルダ
    
    ■ Microsoft Visual Studio 2005 の場合: "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE" フォルダ
    
[Caution] "SFBWrapper\Package.p.hpp" ファイルのコピー

SophiaFramework UNIVERSE をバージョンアップすると、 "(SophiaFramework UNIVERSE のインストール先フォルダ)\Include\SFBWrapper\Package.p.hpp" ファイルが上書きコピーされます。 このファイルには、BREW 日本拡張パッケージ C++ ラッパークラスの情報が含まれていません。

そのため、この状態でコンパイルすると、以下のようなコンパイルエラーが発生します。

■ Microsoft Visual C++ 6.0 の場合: 

... error C2065: 'SFBKDDI○○○○○○' : 定義されていない識別子です。 
... error C2146: 構文エラー : ...
...

■ RealView Compilation Tools for BREW の場合: 

line *** : Error: C2225W: declaration lacks type/storage-class (assuming 'int'): 'SFBKDDI○○○○○○' 

この問題は、SophiaFramework UNIVERSE バージョンアップ時に、 "SophiaFramework○○○KDDI\IncludeKDDI" フォルダ内にある、 "Package.p.hpp" ファイルを "(SophiaFramework UNIVERSE のインストール先フォルダ)\Include\SFBWrapper\Package.p.hpp" に上書きコピーすることにより解決できます。

21.4.2.2. TARGET_EXTENSION_KDDI の定義

KDDI 社提供 BREW 日本拡張パッケージのラッパークラスを使う場合、 SophiaFramework.hpp ヘッダーファイルをインクルードする前に TARGET_EXTENSION_KDDI マクロを定義します。

TARGET_EXTENSION_KDDI マクロの定義は、Microsoft Visual Studio の [プリプロセッサの定義] 、 RealView Compilation Tools for BREW の -D オプションで代替することも可能です。 通常、この方法で BREW 日本拡張パッケージの使用を指定します。

例 21.22. BREW 日本拡張パッケージを使うためのマクロ定義

#define TARGET_EXTENSION_KDDI // VC++ の [プリプロセッサの定義]、RVCTB の -D オプションで指定する場合は不要
#include <SophiaFramework.hpp>

SophiaFramework UNIVERSE AppWizardで、[ KDDI 拡張インターフェースを使用する ] にチェックを入れると、 Microsoft Visual Studio の [プリプロセッサの定義]で TARGET_EXTENSION_KDDI が自動的に定義されます。 ただし、RealView Compilation Tools for BREW の -D オプションは、手動で設定する必要があります。

TARGET_EXTENSION_KDDI マクロの定義を手作業で行う方法は以下の通りです。

■ Microsoft Visual C++ 6.0 の場合

1. メニューから [プロジェクト] -> [設定] を選択します。

2. [C/C++]タブを選択します。

3. [プリプロセッサの定義] の項目に TARGET_EXTENSION_KDDI を追加し、OK ボタンを押します。

■ Microsoft Visual C++ 2005 / Microsoft Visual C++ .NET 2003 の場合

1. メニューから [プロジェクト] -> [プロパティ] を選択します。

2. [C/C++] フォルダから[プリプロセッサ]を選択します。

3. [プリプロセッサの定義] の項目に TARGET_EXTENSION_KDDI を追加し、OK ボタンを押します。

■ RealView Compilation Tools for BREW 1.2 用メイクファイルの設定

RealView Compilation Tools for BREW 1.2 用メイクファイル内に TARGET_EXTENSION_KDDI を定義します。

      .....

#-------------------------------------------------------------------------------
# Target compile time symbol definitions
#
# Tells the SDK source stuffs that we're building a dynamic app.
#-------------------------------------------------------------------------------

# DYNAPP          = -DDYNAMIC_APP
DYNAPP          = -DDYNAMIC_APP -DTARGET_EXTENSION_KDDI
      .....
[Caution] 注意事項

TARGET_EXTENSION_KDDI マクロを定義しなかった場合、 コンパイル時に以下のようなエラーが発生します。

■ Microsoft Visual C++ 6.0 の場合: 

... error C2065: 'SFBKDDI○○○○○○' : 定義されていない識別子です。 
... error C2146: 構文エラー : ...
...

■ RealView Compilation Tools for BREW の場合: 

line *** : Error: C2225W: declaration lacks type/storage-class (assuming 'int'): 'SFBKDDI○○○○○○' 

※1. SophiaFramework UNIVERSE AppWizardで、 [ KDDI 拡張インターフェースを使用する ] にチェックを入れても、 RealView Compilation Tools for BREW では TARGET_EXTENSION_KDDI マクロは自動的に定義されません(上記にあるように手動で定義する必要があります)。

※2. BREW 日本拡張パッケージ C++ ラッパークラスライブラリのリンクの設定も自動的に行われません(参照: BREW 日本拡張パッケージ C++ ラッパークラスライブラリの設定)。

21.4.2.3. BREW 日本拡張パッケージ C++ ラッパークラスライブラリの設定

BREW 日本拡張パッケージ C++ ラッパークラスライブラリのリンクの設定は、 以下のようにして手動で行います。

■ Microsoft Visual C++ 6.0 の場合

  1. メニューから [プロジェクト] -> [設定] を選択します。
  2. [リンク]タブを選択します。
  3. [オブジェクト/ライブラリ モジュール] に以下のライブラリのパスを手動で追加します。
    ■ BREW SDK 4.0 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI400JpnVC60.lib"
    
    ■ BREW SDK 3.1 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI310JpnVC60.lib"
    

■ Microsoft Visual C++ .NET 2003 の場合

  1. メニューから [プロジェクト] -> [プロパティ] を選択します。
  2. 左のリストから [構成プロパティ] -> [リンカ] -> [入力] を選択します。
  3. [追加の依存ファイル] に以下のライブラリのパスを手動で追加します。
    ■ BREW SDK 4.0 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI400JpnVCNET2003.lib"
    
    ■ BREW SDK 3.1 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI310JpnVCNET2003.lib"
    

■ Microsoft Visual C++ 2005 の場合

  1. メニューから [プロジェクト] -> [プロパティ] を選択します。
  2. 左のリストから [構成プロパティ] -> [リンカ] -> [入力] を選択します。
  3. [追加の依存ファイル] に以下のライブラリのパスを手動で追加します。
    ■ BREW SDK 4.0 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI400JpnVC2005.lib"
    
    ■ BREW SDK 3.1 の場合:
    
       "$(SFHOME)\Library\SophiaFrameworkKDDI310JpnVC2005.lib"
    

■ RealView Compilation Tools for BREW 1.2 用メイクファイルの設定

SophiaFrameworkKDDI400JpnRVCTB12.a をリンクするライブラリとして追加します。 BREW SDK 3.1 の場合は、SophiaFrameworkKDDI310JpnRVCTB12.a を追加します。

      .....

#===============================================================================
#                           MODULE SPECIFIC RULES
#===============================================================================

APP_OBJS =  $(OBJS) "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB12.a" "$(SF_HOME)\Library\SophiaFrameworkKDDI400JpnRVCTB12.a"

      .....
[Caution] 注意事項

BREW 日本拡張パッケージ C++ ラッパークラスライブラリのリンクの設定を行わなかった場合、 リンク時に以下のようなエラーが発生します。

■ Microsoft Visual C++ 6.0 の場合: 

*********.obj : error LNK2001: 外部シンボル ""public: static class SFXBrewPointer<class SFBKDDI○○○> __cdecl 
SFBKDDI○○○::NewInstance(long *)" (?NewInstance@SFBKDDI○○○@@SA?AV?$SFXBrewPointer@VSFBKDDI○○○@@@@PAJ@Z)" 
は未解決です

*********.dll : fatal error LNK1120: 外部参照 1 が未解決です。

link.exe の実行エラー

■ RealView Compilation Tools for BREW の場合: 

Error: L6218E: Undefined symbol static SFBKDDI○○○::NewInstance(long*) (referred from ********.o).

SophiaFramework UNIVERSE AppWizardで、 [ KDDI 拡張インターフェースを使用する ] にチェックを入れても、 RealView Compilation Tools for BREW の -D オプションは自動的に定義されません。