4

私は今、自分のプロジェクトを再編成しており、最近は単純なアプリケーションだったものが、静的ライブラリ実際のアプリケーションのペアの C++ プロジェクトになりました。

.pdb2 つのプロジェクト間で 1 つのプリコンパイル済みヘッダーを共有したいのですが、ファイル パスの設定に問題があります。

私の最初のプロジェクトが呼び出され、対応するファイルでそのファイルをLibraryビルドするとします。ここで、2 番目のプロジェクトが呼び出され、すべてが同じフォルダー (および別のファイル) にビルドされます。.libLibrary.pdbApplication.exe Application.pdb

現在、私の両方のプロジェクトは、1 つの実際のヘッダー ファイルに基づいて、独自のプリコンパイル済みヘッダー ファイル (Library.pchおよび) を作成しています。それは機能しますが、時間の無駄だと思います。また、2 つのプロジェクト間で 1 つのプリコンパイル済みヘッダーを共有する方法があるべきだとも思います。Application.pch

Applicationプロジェクトでオプションを設定して に設定しようとするとUse Precompiled Header (/Yu)Library.pch次のエラーのために機能しません。

error C2858: command-line option 'program database name "Application.pdb" inconsistent with precompiled header, which used "Library.pdb".

では、適切なデバッグ情報を保持しながら、2 つのプロジェクト間で1 つのプリコンパイル済みヘッダーを共有するトリックまたは方法を知っている人はいますか?

4

2 に答える 2

2

問題は、なぜプリコンパイル済みヘッダー (PCH) ファイルを共有したいのかということです。一般的に言って、それは意味がありません。PCH は、異なるプロジェクト間で情報を共有しないようにコンパイルを高速化するために使用されます。

PDB ファイルについても書いているので、アプリケーションでライブラリ コードをデバッグしたいと思うでしょう。これは、ライブラリのコンパイル時に /Fd パラメータを設定することで実現できます。アプリケーションでライブラリをリンクし、リンカーが対応する PDB ファイルを見つけると、完全なデバッグ サポートが得られます。

于 2010-06-15T14:11:25.617 に答える
1

これはセットアップが複雑で面倒に思えます。それ以上は、まったくできないかもしれません。

代わりに、あるアプリケーションのプリコンパイル済みヘッダーを 2 番目のアプリケーションに含めることができます。2 番目のプロジェクト用に 1 回コンパイルされますが、メンテナンスが容易になり、2 番目のプロジェクトで依存関係を再定義する必要はありません (含めるだけです)。

于 2010-06-15T13:59:25.783 に答える