0

標準ライブラリに依存する C++ スタティック ライブラリがあります。標準ライブラリをDLLとしてリンクすることを選択すればビルドOKです。ただし、LIBとしてリンクすると問題が発生します。私のライブラリは静的な標準ライブラリを参照し、私の EXE は標準ライブラリと MFC を参照し、「関数 XXX は既に定義されています」というエラー メッセージを受け取ります (ここで、XXX は operator new、free、malloc などの標準ライブラリ関数を意味します)。したがって、私の静的 C++ ライブラリは、独自の関数だけでなく、標準ライブラリ関数もエクスポートし、C++ プログラムに 2 回インポートされているようです。この問題を修正し、静的標準ライブラリを使用する静的ライブラリを作成する方法はありますか?

4

1 に答える 1

0

静的ライブラリには標準ライブラリのコピー全体が含まれており、2 つを静的にリンクしました。明らかに、そのライブラリをアプリケーションにリンクすると、シンボルが重複します。アプリを静的にリンクすると、リンカーがこれらの標準ライブラリの重複コピーを破棄する可能性があるため、修正できる可能性がありますが、MFC では機能しないと思います。静的ライブラリを DLL 標準ライブラリにリンクします。これは矛盾しているように聞こえるかもしれませんが、実際にはそうではありません。

于 2013-01-27T16:44:32.277 に答える