cygwin C++
cygwin 上で gcc c++ コンパイラの g++ を使っていたときに、思いっきりはまった。 ・ライブラリを作る libhoge ・そのライブラリを使うプログラムを書く geho.cpp $ g++ -I/path/to/include -L/path/to/lib g

kwiさんのブログ記事

前へ[ PHP xmlrpc extension patches ]
[ ICU library での文字セット変換 ]次へ

cygwin C++

spacer
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

しかし腑に落ちない。まっとうな方法はないものか。
  • │2010-01-19 18:05:44│ カテゴリー:日記│ コメント(0) │ トラックバック(0)
  • 宛先 :
  • トラックバックURL:
  • この記事にトラックバックをする場合は、i-revoポータルサイトご利用上の注意を必ずご確認ください。
loading
loading
kwiさん
お友達人数:19人
spacer
spacer

© 2011 Internet Revolution