1. ホーム
  2. c

[解決済み] 2つのライブラリが同じ名前の関数を提供し、競合が発生した場合、どうすればよいですか?

2022-10-04 06:38:04

質問

同等の名前の関数を提供するライブラリが2つある場合、どうすればよいでしょうか?

どのように解決するのですか?

  • 片方または両方を制御している場合: 片方を編集して名前を変更し、再コンパイルする または同等に、以下を参照してください。 ベン 不明 の答えは、動作する がなければ にアクセスすることなく動作します。
  • もし、どちらもコントロールできないのであれば、どちらかをラップすることができます。それはコンパイル 別の ( 静的リンク このライブラリは、問題のあるシンボル以外のオリジナルのシンボルをすべて再エクスポートする以外には何もしませんが、別の名前を持つラッパーを通して到達します。なんて面倒なんでしょう。
  • 後で追加されました。 qeekはダイナミックライブラリについて話していると言っているので、提案された解決策は フェルッチョ mouviciel がベストでしょう。(私は、静的リンクがデフォルトだった大昔の時代に生きているようです。それが私の思考を彩っています)。

コメントについて。export" によって、私はライブラリにリンクしているモジュールから見えるようにすることを意味します。 extern キーワードに相当します。これをどのように制御するかは、OSやリンカに依存します。そして、それは私が は常に は調べなければなりません。