Ruby mswin32拡張ライブラリィMSVCR80版ビルド覚書き No.2
本日分
なかむら(う)さん経由で公開されているpdcurses-2.60-1からビルド -> OK
MakeFileはあるものの、installタスクのデフォルトの展開先が /usr/local なので、Windowsでは適当なディレクトリを指定しないと必ずコピーが失敗する。また、マニフェストが埋め込まれないので、ビルド後に以下のようにmt.exeを利用してマニフェストを作成したdllに埋め込む必要がある(SxSのライブラリィはLoadLibrary時にマニフェストは自動的に読み込まれないので、埋め込まないと依存性の解決に失敗する
mt -manifest pdcurses.dll.manifest -outputresource:pdcurses.dll;2
- iconv
なかむら(う)さん経由で公開されているMeadowy.orgのiconv-1.8.win32.zipは当然ながらバイナリのみの配布であり、iconv.dllはMSVCRT.DLLにリンクしている。
なのでソースコードを以下からダウンロードしてビルド -> OK。
LibIconv for Windows - gnuwin32.sourceforge
Win32 VC++用のMakeFileはあるものの、VC++4〜6までに対応するものであり、VC++8(2005)だと対応していないオプションがあるためcl.exeが止まる。不要なオプションをコメントアウトして修正。
# "-GD" (msvc5) optimizes for DLL. # mscv4 doesn't know about this flag and ignores it. # -DBUILDING_LIBICONV: Change expansion of LIBICONV_DLL_EXPORTED macro. # -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. #PICFLAGS = -GD -DBUILDING_LIBICONV -DBUILDING_DLL -DPIC
「# "-GD" (msvc5) optimizes for DLL.」とあるので、使わなくとも良いだろうと勝手に判断。
installタスクではデフォルトでc:\usrというディレクトリを作ってインストールするので、適宜変更する必要がある。あと、pdcurses同様にマニフェストの埋込みは手動で実施する必要がある。
今日はここまで。2つしか進まなかった。
#しかし..そもそもiconvってWindowsで必要あったんだろうか。