検索まずは、検索! Index人気の20件
最新の20件2018-12-022018-01-092017-05-072017-04-252016-05-012015-02-242014-01-032013-06-252012-12-302012-12-292012-07-272012-07-162012-02-052012-01-292011-10-012011-09-18 |
障害情報目次概要問題に直面した時、すぐ解決できるように、障害情報を書き留めましょう。 オーバーライド(C++)リンクエラー障害内容C++において、仮想関数がうまく動かない。 エラー文undefined reference to ... ちょっと忘れた。。 原因標準ライブラリの実装やリンカスクリプトが原因。 解決方法.rodata._ZTV6parent ・・・ vtable .rodata._ZTI6parent ・・・ type_info .rodata._ZTS6parent ・・・ なんだっけ・・? これらを以下のようにリンクすれば、正常に動作する。はず。 .rodata :
{
*(.rodata)
*(.rodata.*)
}
しかし、これでは、type_info(C++の型に関するライブラリ)が無いといわれるため、標準ライブラリを実装する必要がある。 補足C++のライブラリを実装するのは難しいので、 .rodata :
{
*(.rodata)
*(.rodata._ZTV*)
}
とすれば、vtableが使用でき、オーバーライドだけなら実装できる。 現在、標準ライブラリを実装できるように、頑張っています! リンク時に__gxx_personality_v0と出るundefined reference to `__gxx_personality_v0' GCC,G++でリンカスクリプトを使用してコンパイルするとundefined reference to `__gxx_personality_v0'と出てldが完了しない リンカスクリプトに /DISCARD/ セクションを追加したらコンパイルが通った。 コンパイル時にライブラリを取り込まない設定などは分かりません |