問題タブ [precompiled-headers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4811 参照

c++ - 静的ライブラリプロジェクトでのプリコンパイル済みヘッダーの使用

プロジェクトの設定方法についてアドバイスが必要です。静的ライブラリを構築していますが、行き過ぎる前に、プリコンパイル済みヘッダーの使用方法が正しいかどうかを知りたいと思っています。

これまでのところ、私のstdafxファイルには(DWORDなどのタイプの場合)と(std :: stringの場合)が含まれています。

TestFuncs.cpp/hという単純なcpp/ヘッダーコンボを作成しました

TestFuncs.cpp:

TestFuncs.h

ここでのこのコードは正しくコンパイルされます。私が抱えている問題は、この静的ライブラリを別のプロジェクトで使用したい場合、通常は#include "path_to_my_static_lib_project/TestFuncs.h"を実行することです。

ただし、これに関する問題はTestFuncs.hに基づいており、DWORDと文字列はstdafx.hファイルから定義されたタイプであるため、その時点では不明です。

私が思いついた解決策の1つ(そうすることが正しいかどうかはわかりません)は、#pragmaの後にTestFuncs.hの先頭にstdafx.hを一度含めることです。これで、プロジェクトはプリコンパイル済みヘッダーを使用するかどうかに関係なくファイルを処理します。

これはどのように行われるべきですか、それともこれを行う適切な方法がありますか?

ありがとうございました。

0 投票する
1 に答える
337 参照

c++ - 特定のヘッダーが既に stdafx.h に含まれている場合、明示的に .cpp ファイルに含める必要がありますか?

特定のヘッダーがすでに stdafx.h に含まれている場合 - .cpp ファイル (すでに stdafx.h が含まれている) にそれを明示的に含める必要がありますか?

0 投票する
2 に答える
4724 参照

c++ - Visual Studioはvc90.pdbを何に使用しますか?

http://msdn.microsoft.com/en-us/library/yd4f8bd1.aspxによると、プロジェクトには2つの.pdbファイルがあります。

project.pdb後でミニダンプをロードできるようにするために使用しますが、vcx0.pdbは正確には何に使用されますか?足りない場合は問題ありませんので、保管する必要はありません。

さまざまなプロジェクト間でPCHを共有しようとしていますが、問題を引き起こしているのはこのファイルだけです。PCHで作成したvcx0.pdbをすべてのプロジェクトにコピーすると、それらのプロジェクトはこのファイルをベースとして使用し、独自のシンボルを追加します。これらのプロジェクトにこの.pdbファイルを指定しないと、失敗します。

私が気づいたいくつかのこと:

  • 警告LNK4099がvcx0.pdbの欠落を報告することは、重要なことではないようです。
  • / Fdを使用して複数のプロジェクトを同じファイルにポイントし、並列ビルドを無効にしてその機能を実現すると、すべてのプロジェクトが独自のシンボルで増分し続けます
0 投票する
2 に答える
3546 参照

c++ - GNU make を使用していくつかのプリコンパイル済みヘッダー ファイルを作成する

gcc (として実行g++) と GNU make を使用します。gcc を使用してヘッダー ファイルをプリコンパイルしprecompiled.h、作成しprecompiled.h.gchます。Makefile の次の行がそれを行います。

g++さまざまなコマンドライン パラメーターを指定して実行する必要が生じるまでは、すべて問題ありませんでした。この場合、precompiled.h.gch存在していても使用できず、コンパイルは非常に遅くなります。この状況を処理するために読んだ gcc のドキュメントでは、ディレクトリを作成し、そこにプリコンパイル済みヘッダー ファイルを配置する必要があります。コマンド ライン パラメーターprecompiled.h.gchのセットごとに 1 つのファイルです。g++

だから今、g++この方法でgchファイルを作成するようにMakefileを変更する方法を考えています。g++ディレクトリ内の既存のファイルを使用できるかどうかをテストするためだけに実行しprecompiled.h.gch、そうでない場合は、一意のファイル名で新しいプリコンパイル済みヘッダーを生成できます。

gcc はそのようなテストをサポートしていますか?

多分私は別の方法で私が欲しいものを実装できますか?

0 投票する
2 に答える
32079 参照

xcode - XcodeプロジェクトからPrefix.pchファイルを削除しても大丈夫ですか?

Xcodeプロジェクトは、Prefix.pchファイルを自動的に生成します。このファイルを削除してビルドしようとすると、「* _Prefix.pch」ファイルが見つからないというビルドエラーが発生しました。

  • Prefix.pchファイルはXcodeでコンパイルするために必須ですか?
  • Prefix.pchファイルなしでビルドするにはどうすればよいですか?
0 投票する
1 に答える
637 参照

c++ - Visual Studio のプリコンパイル済みヘッダーには何が含まれていますか?

問題は、Visual Studio コンパイラによって作成された .pch バイナリの内容に関するものです。何が含まれていますか?ヘッダー ファイルの解析済みツリーのみですか、それともオブジェクト コードですか?

次の例を検討してください。

プリコンパイルされるセットにこのヘッダーを含めると、コンパイルされて .pch に追加される vector<int> の完全なテンプレート インスタンス化が発生しますか?

もう少し文脈を与えるために; 解析ツリーのみがプリコンパイルされている場合、これは、インスタンス化されたテンプレートのオブジェクト コードがコンパイル ユニットごとに 1 回作成され、結果としてコンパイルおよびリンク時間が増加することを意味します。したがって、「ユニティ ビルド」/コンパイル ユニットの削減は、プリコンパイル済みヘッダーが有効になっている場合でも、ビルド時間を短縮する上で重要な要素となります。

0 投票する
3 に答える
1361 参照

c++ - プリコンパイル済みヘッダー: すべきこととすべきでないこと

コンパイルを高速化するためにプリコンパイル済みヘッダーが使用されていることは知っていますが、ヘッダーに含めるべきファイルについて、すべきこととすべきでないことはありますか? たとえば、多くのブースト ライブラリを使用するプロジェクトがあるので、ブースト ヘッダー ファイルをインクルードするだけstdafx.hです (私は VS2008 を使用しています)。すべての標準ヘッダー ファイルも含める必要がありますか? たとえば、 を含め<vector>ても使用しない場合でも、これにより実行可能ファイルのサイズが大きくなりますstd::vectorか? 自分のプロジェクトのヘッダー ファイルを stdafx.h に含めるのは悪い考えですか?

0 投票する
1 に答える
662 参照

precompiled-headers - プリコンパイル済みヘッダー

プリコンパイル済みヘッダーとは正確には何ですか?それらはいつ使用されますか?

0 投票する
2 に答える
8918 参照

c++ - Boostライブラリを使用する場合のコンパイル/リンク時間を短縮します

Boost Program Optionsを使用していますが、非常に小さなC ++コードをコンパイルするのにかなりの時間がかかります(10秒以上)。Boostライブラリなしでコードをコンパイルするのに1秒かかりました。

Boostライブラリを使用してコンパイル/リンク時間を増やす方法はありますか?クロスプラットフォームなので、Mac OS X / Linux/PCでコードをコンパイルする必要があります。

0 投票する
1 に答える
395 参照

c++ - プリコンパイル済みヘッダーと ASLR の何が問題になっていますか?

いくつかのサイトで、プリコンパイル済みヘッダーとアドレス空間レイアウトのランダム化に互換性がないことを読みました。それらに互換性がない理由は何ですか? それを修正するには何が必要ですか?

私の質問は、OS に依存しないことです。これは、grsecurity を使用する Linux および新しい Windows バージョンの問題であると聞きました。(そして、他に ASLR があるかどうかはわかりません。)