NightWalkerの日記: CLAPACK
CLAPACKをC++/CLIで使うためのメモ書き。
CLAPACK-3.1.1-VisualStudio を利用する
CLAPACK-3.1.1-VisualStudio は /MT でビルドされているらしく,/clr でビルドしている Lisys ではリンカエラーが発生します.
- 中略 -
よって,CLAPACK-3.1.1-VisualStudio を /MD でリビルドする必要があります.
基本的には上記エントリーの通りなのですが、いくつか注意点がありました。
1) CLAPACK本家から、CLAPACK-3.1.1-VisualStudio.zipをダウンロード
2) VS2008SP1で開くと変換ウィザードが立ち上がるので、そのまま変換。
3) blas, clapack, libf2cのプロパティを/MD, /MDdに変更。
→ [構成プロパティ ]-[C/C++ ]-[コード生成] の [ランタイム ライブラリ ]
4) 出来上がったLIBを自分のソフトに組み込んでみたら、リンク時に大量のワーニングが出た(LNK4099など)ので
構成プロパティ - C/C++ - 全般の、デバッグ情報の形式を「C7互換 /Z7」にする。
この変更により簡易リビルドができなくなるので、構成プロパティ - C/C++ - コード生成の、簡易リビルドを「いいえ」にする。
5) 上記サイトの説明通り、足りないファイルを追加と、若干のソース修正(fio.h)。
6) nowarpのdebugとReleaseでビルド。
CLAPACK-3.1.1-VisualStudio\LIB\Win32 に clapackd_nowrap.lib, libf2cd.lib, BLASd_nowrap.lib (debug_nowarp時)が出来る。
必要なファイルは、include と上記lib\win32。
7) 自分のソフトに組み込んでみたら「'char' は ')' によって先行されなければなりません。」という、エラーが出る。
これはWindowsでCLAPACKを使おうで対応方法が指摘されている。
結論から言うと、この場合は、small という変数名に原因があるんだね。このsmall という変数名をsmall1 と書き換えるだけで、ビルドは成功するようになるよ。
(slabad_()、dlabad_() という二つの関数において変数small の書き換えが必要だ)
これでOK。
boostも使っている俺みたいな奴は、Boost.uBLAS と Boost.Bindings, lapack(clapack) の紹介からのエントリーはバイブルだね。
CLAPACK More ログイン