最新 RSS

horiday blog

2010/10/12

[felica] felicalib を cygwin から使う

去年くらいにpasori を使って fcf フォーマットから ID,氏名を抽出するというエントリを書きましたが,最近 felicalib を使って IC カードに情報の書き込みをする必要が出てきたので,felicalib を cygwin から使う方法についてまとめておきます.

まず felicalibには felicalib.dll を cygwin からも利用できるように変換します.felicalib に同封されている felicalib.dll, felicalib.lib を同じディレクトリに置いておきます.

% ls
felicalib.h dump.c felicalib.dll  felicalib.lib

そして dlltool を使って cgywin と互換性のあるインポートライブラリを作成します.

% echo EXPORTS > cygfelicalib.def
% nm felicalib.lib | grep ' T _' | sed 's/.* T _//' >> cygfelicalib.def
% dlltool --def cygfelicalib.def --dllname felicalib.dll --output-lib cygfelicalib.dll

これで cygwin と互換性のあるインポートライブラリ cygfelicalib.dll ができました.次に felicalib に同封されていた dump.c (カードの情報を dump するだけのコード)を試しにコンパイル,実行してみます.

% gcc-3 -mno-cygwin ./dump.c -o dump.exe -L. -lcygfelicalib
% ./dump.exe
# IDm: XX XX XX XX XX XX XX XX
# PMm: XX XX XX XX XX XX XX XX

# System code: XXXX
# Number of area = 9
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Area: XXXX - XXXX
# Number of service code = 33
...

ということで,うまく動いたぽいです.

関連リンク