hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

xdoc2txt の64bit版

ユーザからの要望があって、xdoc2txtおよびdllの64bit版を作成したので、忘備録を書いておく。

x64コンパイラおよびツールのインストール

Visual Studio 2010を標準でインストールすると、64ビット用コンパイラはインストールされないので、インストール時のオプションで「x64コンパイラおよびツール」を指定してインストールする。

既存のプロジェクトの64bit化

32bit版の既存のプロジェクトを64bit化する場合の手順。

  • 32bit版の既存のプロジェクトを読み込んだ後、メニュー→ビルド(B)→構成マネージャー(O)を起動
  • アクティブソリュージョン構成(C)→新規作成...を選び、64bit用の新しいソリュージョン構成を作成する。名称は例えば"Release x64"とする。この時設定のコピー元に(32bitの)既存のソリュージョンを選択すると、ソリュージョンがコピーされる。
  • アクティブソリュージョンプラットフォーム(P)→新規作成

新しいプラットフォームを入力または選択してください(P) : x64
設定のコピー元 : Win32

  • 構成マネージャーで、プラットフォームをWin32からx64に変更する。基本的にはこれだけで64bit版になる。
  • プロパティを開き、ライブラリアン→全般→対象コンピュータが MachineX64(/MACHINE:X64)になっていることを確認する(なっていなければ変更する)。

EXE、LIB、DLLも全て同様の手順で64bit化される。
注意点は、32bitのDLLと64bitのDLLを混ぜて使うことはできないので、関連するDLLやライブラリは全て64bitで揃える必要がある。xdoc2txtは内部でzlib1.2.3を使用しているので、zlib1.2.3もソースから64bitで再コンパイルした。
またVisual C++の64bit版を使用してコンパイルしたモジュールを実行する場合、Visual C++ 再頒布可能パッケージもx64用をインストールする必要がある。

32bit版 Download Microsoft Visual C++ 2010 再頒布可能パッケージ (x86) from Official Microsoft Download Center
64bit版 Download Microsoft Visual C++ 2010 再頒布可能パッケージ (x64) from Official Microsoft Download Center

一般的な注意

Visual C++ の64bit版の一般的な注意は、

  • 64 ビット Windows OS上ではポインタは64bitだが、int と long は相変わらず32bit ( 64bit整数は__int64 または long long ! )。したがってポインタをintやlongに代入してはいけない。
  • size_t、time_t、 ptrdiff_t は、64 ビット Windows OS上では 64 ビット。したがってtime_tをlongに代入してはいけない。

C# で64bit版のdllを使用する場合の注意点

C#のプロジェクトのプラットフォームターゲットはデフォルトではx86になっているため、デフォルトのままだと32ビット版のdllしか読み込まない。C#から64bitのdllを呼び出す場合は、プラットフォームターゲットをAnyCPUに変える。