前へ[ PHP xmlrpc extension patches ]
[ ICU library での文字セット変換 ]
次へ 
cygwin 上で gcc c++ コンパイラの g++ を使っていたときに、思いっきりはまった。
・ライブラリを作る libhoge
・そのライブラリを使うプログラムを書く geho.cpp
$ g++ -I/path/to/include -L/path/to/lib geho.cpp -lhoge
/usr/lib/gcc/i686-pc-cygwin/3.4.4/libstdc++.a(fstream-inst.o):(.text$_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev[std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream()]+0x0): multiple definition of `std::basic_ifstream<cha
r, std::char_traits<char> >::~basic_ifstream()'
/path/to/lib/libhoge.dll.a(d000422.o):(.text+0x0): first defined here
collect2: ld returned 1 exit status
ライブラリ libhoge は C++ 標準ライブラリを使っています。
とりあえず解決する方法は、リンカーオプションを渡してエラーがなかったことにしてしまう方法。
$ g++ -I/path/to/include -L/path/to/lib -Wl,--allow-multiple-definition geho.cpp -lhoge
しかし腑に落ちない。まっとうな方法はないものか。