GNU/Linux >> Linux の 問題 >  >> Linux

dlopen/dlsym で使用すると、dynamic_cast が失敗する

ここで私の質問に対する答えを見つけました。私が理解しているように、「testc」で使用できる typeinfo をライブラリ「testd」で使用できるようにする必要があります。 dlopen() を使用する場合にこれを行うには 、さらに 2 つのことを行う必要があります:

  • ライブラリをリンクするときは、リンカに -E を渡します オプションを使用して、未解決のシンボルだけでなく、すべてのシンボルを実行可能ファイルにエクスポートするようにします (存在しないため)
  • dlopen() でライブラリをロードする場合 、 RTLD_GLOBAL を追加します testc によってエクスポートされたシンボルを確認するためのオプション testd まで利用可能

一般に、gcc は dlopen 境界を越えた RTTI をサポートしていません。私はこのめちゃくちゃなtry/catchの個人的な経験がありますが、あなたの問題はもっと同じように見えます.残念ながら、dlopen 全体で単純なものに固執する必要があると思います。


Linux
  1. caddr_t の重要性と使用時期は?

  2. gnome-keyring を Sudo として Git 認証情報ヘルパーを使用するとエラーが発生する

  3. Ubuntu create-react-app が許可が拒否されて失敗する

  1. リダイレクトされたときに正しい名前のファイルを取得するにはどうすればよいですか?

  2. SSH秘密鍵でログインした場合のパスワードなしのsudo

  3. タスクセットで実行中のプロセス アフィニティを設定できない

  1. 最後にWindowsを使用したのはいつですか。

  2. シェルスクリプトで実装すると履歴置換が失敗しますか?

  3. Ssh Inside Sshは「stdin:Is Not A Tty」で失敗しますか?