ここに状況があります。私は多くの場所で壊れている古いレガシーライブラリを持っていますが、多くの重要なコードが組み込まれています(ソースはなく、lib +ヘッダのみです)。このライブラリによって公開されている関数は、特別な方法で処理しなければならず、いくつかのポストや前処理や処理が悪くなります。私が思うのは、この古いライブラリを使用する別のライブラリを作成し、「安全」な新しい関数セットを公開することです。ライブラリ内のライブラリを非表示にする
私はすぐにこの新しいライブラリの作成を試み、それをメインプログラムにリンクしました。しかし、それはまだ新しいライブラリを通して公開されている古いライブラリのシンボルにリンクしています。
これらの機能を使用しないように人々に頼むことは明らかですが、何らかの方法でそれらを隠すことができれば、安全機能を晒すだけで、それはさらに優れています。
可能ですか?代替案?
(それはARMマイクロコントローラ上で実行している。ファイル形式はELFで、OSはそのコンパイラを使用して、Keil社からのRTOSである)
[更新]
は、ここに私がやってしまったものです私は新しいライブラリ内に古いものと同じプロトタイプを使用するダミー関数を作成しました。新しいライブラリをメインプログラムにリンクし、他の開発者が古いライブラリの "悪い"機能を使用しようとすると、 "abcdシンボルが複数定義されている(old_lib.oとnew_lib.oによって)ビルドを中断します。 [アップデート2]
...政府の仕事のために十分に良い私は実際にIDE = P、はるかに優れたソリューションを通じてそれらをリンクする際、私は手動でライブラリのコンポーネントを非表示にすることができていることが分かりました。ここでスペースを取って申し訳ありません。
どのオペレーティングシステムですか?リンケージ機能は実行可能ファイル形式に依存します。実行形式はオペレーティングシステムによって異なります。 – zneak
シンボルテーブルを見て人々があなたのライブラリに対してプログラミングしている場合、深刻なソフトウェア開発プロセスの問題があります。古いlibの開発者用インターフェイスを公開しないでください。 – John3136
これは実際にはARMマイクロコントローラで実行されています。ファイル形式はELFで、OSはKeilのRTOSでコンパイラを使用しています。 – Piotr