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で使える。