作成中
概要
ここではVisual C++ 6.0とSWIGを用いてC++のクラスを公開しているDLLを利用する手順についてメモします。
環境
手順では以下の環境で動作を確認しています。
- OS : Windows 2000 SP4
- SWIG : swigwin-1.3.40
- Visual C++ 6.0 (SPなし)
- Ruby : ruby 1.8.6 i386-mswin32
手順
1. SWIGの導入
- 公式サイトからSWIGをダウンロードします。
- 解凍してswig.exeのある場所にパスを通します。
2. DLLの用意
今回は、以下のようなC++のクラスを公開するDLLを用意しました。
3. SWIGでコードを作成
- 上記のTestIF.hをSWIGが解析できるようにします。具体的にはDllExportの記述を削除します。
- swig -ruby -c++ TestIF.i
4. DLLのラッパーDLLを作成
rubyTestDLL.dllで公開しているC++のクラスをrubyで使うためのラッパーDLL(拡張ライブラリ)を作成します。
手順は以下となります。
- VC6でWin32 Dynamic-Link Librayプロジェクトを新規作成
- プロジェクト作成時の「作成するプロジェクト」で「単純なDLLプロジェクト」選択
- SWIGで生成されたcxxファイルをプロジェクトに追加
- 「プロジェクトの設定」の「C/C++」の「プリプロセッサ」の「インクルードファイルのパス」に以下を設定
- [rubyのインストールパス]\lib\ruby\1.8\i386-mswin32
- 上記のTestIF.hがある位置
- 「プロジェクトの設定」の「リンク」の「インプット」で以下のlibファイルを指定
- [rubyのインストールパス]\lib\msvcrt-ruby18.lib
- 上記のrubyTestDLL.lib
- ビルド実行
5. 作成した拡張ライブラリをテスト
- 上記のrubyTestDLL.dllとrubyTestDLLWrp.dllをカレントディレクトリにおいて以下のコードを実行しました。
-
|
テストコード |
require 'rubyTestDLLWrp'
wrp = rubyTestDLLWrp::TestIF.new
p wrp.plus_int(3, 4)
p wrp.plus_char("test", "value")
|
最終更新:2009年10月19日 21:27