ホーム

OFF-SOFT.net

OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

ICU(1) ICU Unicodeライブラリを古いVC++で環境設定する

公開日| 2009年10月01日 | コメントはまだありません。
概要 :
 今回は、ICUです。これも非常に有名なUNICODEライブラリです。
ICUは、UNICODEを扱うためのライブラリです。クロスプラットフォームに対応しており、Linux系でのUNICODE制御には、よく用いられているようです。 また、BOOSTなどの他のライブラリでもUNICODEを扱う場合、一般的にICUとリンクすることがよくあります。

ICUの最新版では、VC++の最新版への対応(プロジェクトファイル)のみを行っています。 そのため、VC++の最新版でコンパイルを行う場合は、ソリューションを開いてビルドするだけで良いです。
(%ICUインストールディレクトリ%\icu\source\allinone\allinone.sln)

ただ、古いVC++で、コンパイル(インストール)を行う場合は、少し手間が必要となります。

今回は、その環境設定について記載しておきます。

ダウンロード

ここで使用したサンプルソースコード:


必要なものを揃えて、コンパイル
必要なもの

以下のものが必要となります。
コンパイルを始める前に、全てを準備します。
  • VC++ 2003 , 2005 のいずれかが必要です。
    2003は、ToolKit+Standard の組み合わせか、上位エディションで最適化可能なものを揃えましょう。
  • Cygwin
    序気のダウンロード先から、Setup.exeをダウンロードします。

    Setup.exeを起動してインストールを始めます。
    簡単に注意点を記載しておきます。
    ここで必要な機能は、bashとmakeの2つです。

    1. "次へ"をクリックします。

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

    3. インストール先のディレクトリを指定します。
      (インストール先ディレクトリ名は、空白や"-"などの記号が無い方が無難です。)

      デフォルトで使用するファイル形式を"DOS ... "に設定します。
      ※ICUのファイルは、改行コードがWindowsと同じCRLFとなっています。ここを設定しておかないと変なエラーがでます。

      設定の後、"次へ"をクリックします。


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


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


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


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


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


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



  • ICUのソース一式
    先のダウンロード先から、icu4c-4_xxx-src.zipファイルをダウンロードし、インストールするディレクトリへそのまま解凍します。

Cygwinは、bashはデフォルトでインストールされますが、makeは、インストールされないので、上記のように指定してあげないといけません。

環境設定とコンパイル(ビルド)

上記のように必要なものがそろったら、以下の手順で、コンパイルを実行します。

  1. VC++ 2003 , 2005 のいずれかのコマンドプロンプトを起動します。
  2. 起動したコマンドプロンプトから、Cygwinへのパスを設定します。
    1
    2
    
    C:\> set path=%path%;c:\cygwin\bin
    C:\> 

    この例では、cygwinのインストール先が"c:\cygwin"としています。
    ※cygwinのパスは、最後に追加しましょう。
  3. 起動したコマンドプロンプトから、ArciverのコマンドのパスをCygwinへのパスとして設定します。
    1
    2
    
    C:\> set AR=c:\cygwin\bin
    C:\> 

    この例では、cygwinのインストール先が"c:\cygwin"としています。
  4. ICUを解凍したディレクトリへ移動します。
    1
    2
    3
    
    C:\> cd \ICU
    C:\ICU> cd icu\source
    C:\ICU\icu\source> 

    この例では、ICUの解凍先が"c:\ICU"としています。
    更に、icu\sourceへ移動することに注意してください。
  5. 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です。
  6. 作成したmakeファイルでビルドします。
    1
    2
    3
    4
    5
    
    C:\ICU\icu\source> make
                       :
                       :
                       :
    C:\ICU\icu\source> 

    ここのmakeコマンドは、CygwinでインストールしたGNU Makeでなければいけません。
    動作がおかしい場合は、他の環境の別のmakeが動作していないかチェックしましょう。

    ここで特にエラーの表示が無ければ環境ができています。

ここまでにエラーが発生するよう場合は、ご自身の環境に誤りがあります。
例えば、mingwなどを併用しているような場合、正しくCygwinのコマンドが実行されていないなどの影響もありますので、 エラーが発生したら、まずは、環境(特にPATH)を見直してみましょう。

開発環境を整える
ICUを使うためには、IncludeパスとLibraryパスへ、ICUのそれぞれのパスを追加する必要があります。
ここでは、ICUのDLLが作成されました(icu\source\libを確認してください)。そのため、環境設定で、PATHにDLLのあるパスを追加します。


今回は、VC++ 2003 のIDEを使いますので、その環境設定を行ってみましょう。

  1. VC++ 2003 を立ち上げます
  2. メニューの[ ツール ] - [ オプション ] - [ プロジェクト ] - [ 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関連について詳しく知りたい方は、以下の本なども良いと思います。
本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。


コメント

コメントをどうぞ







  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ