ICU(1) ICU Unicodeライブラリを古いVC++で環境設定する
公開日| 2009年10月01日 | コメントはまだありません。
カテゴリー:C/C++ |
概要 : 今回は、ICUです。これも非常に有名なUNICODEライブラリです。
ICUは、UNICODEを扱うためのライブラリです。クロスプラットフォームに対応しており、Linux系でのUNICODE制御には、よく用いられているようです。 また、BOOSTなどの他のライブラリでもUNICODEを扱う場合、一般的にICUとリンクすることがよくあります。
ICUの最新版では、VC++の最新版への対応(プロジェクトファイル)のみを行っています。 そのため、VC++の最新版でコンパイルを行う場合は、ソリューションを開いてビルドするだけで良いです。
(%ICUインストールディレクトリ%\icu\source\allinone\allinone.sln)
ただ、古いVC++で、コンパイル(インストール)を行う場合は、少し手間が必要となります。
今回は、その環境設定について記載しておきます。
ダウンロード
ここで使用したサンプルソースコード:
- ICU ソースコード:http://site.icu-project.org/download
ここでは、4.2を用います。
- Cygwin:http://cygwin.com/
Setup.exeをダウンロードしましょう。
ここで使用したサンプルソースコード:
必要なものを揃えて、コンパイル
必要なもの
以下のものが必要となります。
コンパイルを始める前に、全てを準備します。
- VC++ 2003 , 2005 のいずれかが必要です。
2003は、ToolKit+Standard の組み合わせか、上位エディションで最適化可能なものを揃えましょう。 - Cygwin
序気のダウンロード先から、Setup.exeをダウンロードします。
Setup.exeを起動してインストールを始めます。
簡単に注意点を記載しておきます。
ここで必要な機能は、bashとmakeの2つです。
- "次へ"をクリックします。

- "Install from Internet ... "にチェックをします。
※必要な最新のファイルをインターネットからダウンロードしてインストールします。
"次へ"をクリックします。

- インストール先のディレクトリを指定します。
(インストール先ディレクトリ名は、空白や"-"などの記号が無い方が無難です。)
デフォルトで使用するファイル形式を"DOS ... "に設定します。
※ICUのファイルは、改行コードがWindowsと同じCRLFとなっています。ここを設定しておかないと変なエラーがでます。
設定の後、"次へ"をクリックします。

-
ダウンロードしたファイルの格納ディレクトリを指定します。
デフォルトの設定ディレクトリで問題なければ、そのままで良いと思います。
設定の後、"次へ"をクリックします。

-
デフォルトの"Direct ..."を指定して"次へ"をクリックします。

-
ダウンロードするサイトを指定します。
自分の住んでいる国のサイトがれば、そのサイトを指定した方が良いでしょう。
例えば、あなたが、日本人であれば、"xxxx.jp"のサイトを指定した方が良いでしょう。

-
ここで、"Devel"の階層の中に"make : The GNU ..."を探してチェックします。
(デフォルトではSkipになっていますのでインストールされません。)

-
ダウンロードしてインストールを実行している画面です。

-
"完了ボタン"をクリックして完了です。

- "次へ"をクリックします。
- ICUのソース一式
先のダウンロード先から、icu4c-4_xxx-src.zipファイルをダウンロードし、インストールするディレクトリへそのまま解凍します。
Cygwinは、bashはデフォルトでインストールされますが、makeは、インストールされないので、上記のように指定してあげないといけません。
環境設定とコンパイル(ビルド)
上記のように必要なものがそろったら、以下の手順で、コンパイルを実行します。
- VC++ 2003 , 2005 のいずれかのコマンドプロンプトを起動します。
- 起動したコマンドプロンプトから、Cygwinへのパスを設定します。
1 2
C:\> set path=%path%;c:\cygwin\bin C:\>
この例では、cygwinのインストール先が"c:\cygwin"としています。
※cygwinのパスは、最後に追加しましょう。
- 起動したコマンドプロンプトから、ArciverのコマンドのパスをCygwinへのパスとして設定します。
1 2
C:\> set AR=c:\cygwin\bin C:\>
この例では、cygwinのインストール先が"c:\cygwin"としています。
- ICUを解凍したディレクトリへ移動します。
1 2 3
C:\> cd \ICU C:\ICU> cd icu\source C:\ICU\icu\source>
この例では、ICUの解凍先が"c:\ICU"としています。
更に、icu\sourceへ移動することに注意してください。
- ICUのmakeファイルを作り直します。
1 2 3 4 5
C:\ICU\icu\source> bash ./runConfigureICU Cygwin/MSVC : : : C:\ICU\icu\source>
この例では、VC++2003でのコマンドイメージです。
VC++2005を使用する場合、"Cygwin/MSVC2005"を指定します。
ここで特にエラーの表示が無ければOKです。
- 作成したmakeファイルでビルドします。
1 2 3 4 5
C:\ICU\icu\source> make : : : C:\ICU\icu\source>
ここのmakeコマンドは、CygwinでインストールしたGNU Makeでなければいけません。
動作がおかしい場合は、他の環境の別のmakeが動作していないかチェックしましょう。
ここで特にエラーの表示が無ければ環境ができています。
ここまでにエラーが発生するよう場合は、ご自身の環境に誤りがあります。
例えば、mingwなどを併用しているような場合、正しくCygwinのコマンドが実行されていないなどの影響もありますので、 エラーが発生したら、まずは、環境(特にPATH)を見直してみましょう。
例えば、mingwなどを併用しているような場合、正しくCygwinのコマンドが実行されていないなどの影響もありますので、 エラーが発生したら、まずは、環境(特にPATH)を見直してみましょう。
開発環境を整える
ICUを使うためには、IncludeパスとLibraryパスへ、ICUのそれぞれのパスを追加する必要があります。ここでは、ICUのDLLが作成されました(icu\source\libを確認してください)。そのため、環境設定で、PATHにDLLのあるパスを追加します。
今回は、VC++ 2003 のIDEを使いますので、その環境設定を行ってみましょう。
- VC++ 2003 を立ち上げます
- メニューの[ ツール ] - [ オプション ] - [ プロジェクト ] - [ VC++ディレクトリ ]を開きます。

ここで、
"インクルードファイル"に、"C:\ICU\icu\source\common"を追加します。
"ライブラリファイル"、"実行可能ファイル"に、"C:\ICU\icu\source\lib"を追加します。
設定を終えたら、OKボタンをクリックします。
VC++でサンプルをビルドしてみましょう。
VC++のプロジェクト作成で、空のコンソールアプリケーションを作成します。
そのプロジェクトへ以下のソースコードを貼り付けたcppファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h> #include <iostream> #include <unicode/ucnv.h> using namespace std; // ライブラリを指定しておく #pragma comment(lib, "icuuc.lib") int main() { const wchar_t *porg=L"テスト日本語のテスト、UNICODEからShiftJis!!"; UErrorCode error = U_ZERO_ERROR; int nosize=(int )wcslen(porg); int ndsize=nosize*2+sizeof(int); char *abuff=new char[ndsize]; int ncsize = ucnv_convert( "shift_jis","utf-16le",abuff,ndsize,(const char *)porg,nosize*2,&error); cout << abuff << endl; delete []abuff; return 1; } |
さあ、ビルドしてみてください。
コンパイルおよびリンクが完了できれば、OKです。
上記のコードがコンパイルできない場合は、環境に誤りがあります。パスの環境を見直してみてください。
上記のプログラムは、実際に動作させると以下のようにコンソールがひらき、そこに文字化けせずに以下のように表示されればOKです。
1 | テスト日本語のテスト、UNICODEからShiftJis!! |
これで、VC++の前のバージョン(2003以前のバージョンではコンパイルできません)でもICUが使えるようになります。
他の色々なライブラリでも利用されているICUですので、一度、お試しいただくのも良いと思います。
もっと、UNICODE関連について詳しく知りたい方は、以下の本なども良いと思います。本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。






