VCなど向けの.libファイルをcygwinで使う

 忘れそうなのでメモとして。
 reimpというツールを使うと変換可能。これは MinGW Utilitiesに含まれる。
 ソースをコンパイルする場合はconfigureして全体でmakeは出来なかったので、必要なものだけcompileをするととりあえず大丈夫。
 今回は計測機器をコントロールする際に使っているAgilent IO Libraryのsicl32.libを変換したいので

$ ./reimp sicl32.lib

でlibsicl32.aが出来た。
 が、nmで見るとどうも関数の前に_が余計に1個ついているようで、使えない。
 調べたところ内部で呼んでいるdlltoolが-Uをつけていないのに_を一つ付けている模様。

$ dlltool --version
GNU dlltool 2.17.50 20060817
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.

 ちょっと古いのかもしれない。後で調べることにして、とりあえずdefファイルを生成して、関数の前についている_を消去して.aを作る。

$ ./reimp -d sicl32.lib

$ perl -p -i.bak -e 's/^_//' SICL32.def

$ dlltool -U -d SICL32.def -l libsicl32.a

 .aが出来るので、これがgccで使える。