トップページ > DTV > 2014年06月22日 > xaEB7cEW

書き込み順位&時間帯一覧

2 位/228 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001000000310016



使用した名前一覧書き込んだスレッド一覧
名無しさん@編集中
BonDriver共有ツール総合

書き込みレス一覧

BonDriver共有ツール総合
396 :名無しさん@編集中[sage]:2014/06/22(日) 12:44:54.09 ID:xaEB7cEW
>>394
Cent5の環境で、IBonDriver*.hに、仮想デストラクタを追加したら
warningは消えました。

ダウンキャスト失敗の方は現象変わらずです。
warningとは別件だったみたいです。

CentOS5みたいな古いOSを使っている人は少ないかな..
BonDriver共有ツール総合
398 :名無しさん@編集中[sage]:2014/06/22(日) 19:17:58.89 ID:xaEB7cEW
>>397
sample.cppのコンパイル時に以下のエラーがでました。
---
sample.cpp:(.text+0x26e): undefined reference to `typeinfo for IBonDriver2'
sample.cpp:(.text+0x276): undefined reference to `typeinfo for IBonDriver'
---
とりあえず、sample.cpp側にも上と同じ、IBonDriver*のデストラクタの実体を定義して、
コンパイルを通しました。(何が正解かは不明ですが)
結果としてはNGです。ダウンキャストの失敗は変わらずです。
BonDriver共有ツール総合
401 :名無しさん@編集中[sage]:2014/06/22(日) 19:39:42.03 ID:xaEB7cEW
> とりあえず、sample.cpp側にも上と同じ、IBonDriver*のデストラクタの実体を定義して、
> コンパイルを通しました。(何が正解かは不明ですが)
これは適当すぎなので止めて、BonDriver_Proxy.soとリンクしてみました。
ダウンキャストは失敗せず、正常に動いているようです。

リンクしちゃうとdlpenしてる意味が無くなっちゃうんですけどね
BonDriver共有ツール総合
403 :名無しさん@編集中[sage]:2014/06/22(日) 19:51:16.75 ID:xaEB7cEW
無知でスマン。Linuxでタイプライブラリ使ったこと無いんだ.。
BonDriver共有ツール総合
407 :名無しさん@編集中[sage]:2014/06/22(日) 20:33:01.26 ID:xaEB7cEW
> あああ失礼、sample.cpp側からは実体が見えなくなるので宣言だけにしちゃうと当然エラー出るようになりますね
> この場合はヘッダでは純粋仮想デストラクタとして
> --
> virtual ~IBonDriver() = 0;
> ---
上記はまだ試してないです。

ちょっと手元でコードを弄っているのですが、dlopenを止めて
soをリンク、CreateBonDriverを直接呼び出すようにすると
ダウンキャストに成功するんですよね。
BonDriver共有ツール総合
413 :名無しさん@編集中[sage]:2014/06/22(日) 23:31:38.17 ID:xaEB7cEW
ttp://stackoverflow.com/questions/2351786/dynamic-cast-fails-when-used-with-dlopen-dlsym
この辺ぽかった

sampleコンパイル時に-Wl,-Eで動作するようになった


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。