問題タブ [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 に答える
664 参照

g++ - -g++ でプリコンパイル済みヘッダーをインクルードする

-include myprecompiledheader.hコンパイラ フラグに追加して、プリコンパイル済みヘッダー ファイルをプロジェクトに含めようとしています。ただし、GCC で -H オプションを使用すると、このファイルがリストに表示されないため、「!」が表示されません。または「x」を使用して、.pch ファイルが使用されているかどうかを判断します。プリコンパイル済みヘッダーが使用されているかどうかを確認する方法はあり-includeますか?

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

c++ - 名前空間を使用してグローバル関数を作成しますが、複数定義されたシンボルエラーが発生します

これらの関数は、ほとんどのプログラムオブジェクトが使用するユーティリティタイプのものです。それらを名前空間に入れてグローバルにしたい。この名前空間はヘッダーで定義され、プリコンパイル済みヘッダーに追加されます。ただし、これまでに2つの異なるオブジェクトでこの名前空間の関数を使用しており、コンパイラーはこれら2つのオブジェクトで多重定義シンボルエラーをスローしています。

名前空間ファイル

と私のprecompヘッダー

リンカのエラーメッセージ:

Manager.obj : error LNK2005: "int __cdecl Utils::GetRandomBetween(int,int)" (?GetRandomBetween@Utils@@YAHHH@Z) already defined in Bot.obj stdafx.obj : error LNK2005: "int __cdecl Utils::GetRandomBetween(int,int)" (?GetRandomBetween@Utils@@YAHHH@Z) already defined in Bot.obj c:\users\lee\documents\visual studio 2010\Projects\AI\Debug\AI.exe : fatal error LNK1169: one or more multiply defined symbols found

また、ManagerクラスヘッダーでBotを前方宣言したことにも注意してください。Villageクラスヘッダーと同じです。

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

c++ - WxWidgets コンパイル ヘルプ

WxWidgets (Latest; VC9; Release) をコンパイルしようとしましたが、*.obj および *.pch ファイルのみが出力され、*.lib ファイルは出力されませんでした。*.obj ファイルはオブジェクト ファイルであり、*.pch ファイルはプリコンパイル済みヘッダーであることはわかっていますが、C++ から参照するのでしょうか、それとも何らかの方法で *.lib ファイルに変換する必要があるのでしょうか。

ところで、私は *.pch を使用したことがなく、まったく慣れていません。私はC++を数か月しか使用していません...

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

c++ - クラス名または名前空間名ではありません

私はこの質問が以前に尋ねられ、答えられたことがあることを知っていますが、どの解決策も私にとってうまくいかなかったようで、私のコンパイラはこのエラーで本当に奇妙に動作しています。

コードをコンパイルしようとすると、次のような多数のエラーが発生します。

以前にプロジェクトをコンパイルしたときにこの種のエラーが発生しましたが、不思議なことに消えました。私は問題を解決しようとしていましたが、しばらくすると、すべての変更を元に戻した後、再び機能し始めました。

PCHが正しく機能していない状態でエラーを修正しようとした後にこのエラーがポップアップしたため、これはプリコンパイル済みヘッダーの問題である可能性があると思います。

これが私のコードです(そして私はそれがそれほどうまく設計されていないことを知っています、ただ現時点でそれを機能させようとしています:P):

StdAfx.h

Target.h

Target.cpp

TargetList.h

TargetList.cpp

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

objective-c - プリコンパイル済みヘッダーを処理すると、理解できないエラーが発生します

OS X Lion で、Xcode 4.1 と Pixelwave を使用して iOS 4.2+ ゲームを構築しています。

開発中のある時点で、プロジェクトのクリーンを実行しましたが、それ以来、PCH を処理するときに膨大な数のエラーが発生するため、プロジェクトをコンパイルできませんでした。呼び出しと、報告された最初のいくつかのエラーの束を次に示します。

私が知る限り、これをトリガーするビルド設定には何も変更がありませんでした。

これをデバッグしようとしているときに、失敗したのは次のとおりです。

  • 以前にコンパイルしたプロジェクトの以前のコミットに戻します。
  • Pixelwave の新しいコピーをチェックアウトします。
  • 以前にコンパイルしたプロジェクトの最初のコミットに戻ります。
  • プロジェクトの DerivedData サブディレクトリを削除します。
  • Xcode を再起動します。
  • 再起動しています。
  • 開発ツールのアンインストールと再インストール (必死になっていた)。

これはどれも役に立たず、毎回同じエラーに遭遇しました。私は、この動作の原因が何なのかについて、頭を悩ませています。どこから探し始めればいいのかもわかりません。

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

c++ - ライブラリビルダー用のプリコンパイル済みヘッダーファイルの使用法

この回答によると、ブーストヘッダーとSTLヘッダーは、プリコンパイル済みヘッダーファイルstdafx.hMSVCの世界)に属しています。そこで、ダイナミックリンクライブラリプロジェクトのヘッダーを変更し、すべてのSTL/Boostヘッダーをプロジェクトのに移動しましたstdafx.h

これで、コンパイル時間が短縮されるという利点がありますが、インクルードないため(現在はmyに移動されています)、ライブラリのすべてのユーザーにビルドエラー(例:unknown boost :: scoped_ptr ...)が発生していstdafx.hます。


このジレンマの解決策は何でしょうか?

ヘッダーファイルをインクルードした後のコンパイル時間とコンパイルエラーを減らしたいのですが、dllのユーザーには受け入れられません。

これは役に立ちますか?

  • すべてのincludeディレクティブをそのままにしておきますが、それらを「stdafx.h」に複製しますか?stdafx.hは常に私のプロジェクトのcppファイル内に最初に含まれているので、問題はないはずです。ユーザーはエラーを受け取りません。または、同じヘッダーの複数のインクルードが1つの変換ユニットで発生した場合(ヘッダーガードを取得した場合)、速度の利点が失われますか?

ヒントをありがとう!

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

c++ - 複数のファイルで #pragma hdrstop をパラメータなしで使用するとどうなりますか?

#pragma hdrstopいくつかのソース (cpp) ファイルに (ファイル名パラメーターなしで) 入れることの実用的な価値 (「何をするか」) は何ですか?

MSDN ドキュメントは (もう一度) 泥のように明確であることに注意してください。

編集/注:この回答とリンク先の記事が推奨しているように見えるので、私はこれを求めています。しかし、コンパイル単位ごとに個別の pch ファイルを用意する利点がわかりません。

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

c++ - プリコンパイル済みヘッダーはすべてのメーカーで作成されますか?

私は非常に単純なmakefileを持っており、基本的に次のことを行います。

私の問題は、初めて作成するときにCore.h.gchが作成され、プロジェクトがビルドされることです。それはいいです。

ただし、何も変更しなくても、makeを再度実行すると、Core.h.gchが再作成され、すべてが再コンパイルされます。

プリコンパイル済みヘッダーがない場合、makeは正常に動作します(何も変更されていない場合は何も再構築せず、変更が加えられた場合に必要なものだけを再構築します)

しかし、私は本当にそのプリコンパイル済みヘッダーが欲しいのですが、私が正しくやっていないことがありますか?

編集:

以下が提案されました:

しかし、それでも毎回作成されます:(

0 投票する
0 に答える
776 参照

c++ - 別のプロジェクトのプリコンパイル済みヘッダーを使用する

プリコンパイル済みヘッダー出力 .pch(i) ファイルを共有したい Visual Studio 2010 に 2 つのプロジェクトがあります。

Project1 を消去して再構築すると、.pchi ファイルが作成されます。

Rebuild Project2 は奇妙なことを行います。.pchi ファイルを削除してから、コンパイルするファイルが見つからないと不平を言います。

この動作を停止するには、何を変更すればよいですか (ファイル "Microsoft.Cpp.x64.Intel C++ Compiler XE 12.0.targets" の可能性がありますか?)。

私はファイルを読み取り専用に設定しましたが、もちろん Project2 Build は文句を言います:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets\Intel C++ Compiler XE 12.1\Microsoft.Cpp.x64.Intel C++ Compiler XE 12.1.targets(84,5):エラー MSB3061: ファイル " .pchi" を削除できません。パス「 .pchi」へのアクセスが拒否されました。

.targets ファイルの 84 行目に

< Delete Condition="'%(ClCompile.DebugInformationFormat)' != '' and '%(ClCompile.DebugInformationFormat)' != 'OldStyle' and '%(ClCompile.ProgramDataBaseFileName)' != '' and !Exists(%( ClCompile.ProgramDataBaseFileName)) および '%(ClCompile.UseMSVC)'!='true' および '%(ClCompile.InterproceduralOptimization)'!='MultiFile' および '%(ClCompile.LevelOfStaticAnalysis)'!='Brief' および '% (ClCompile.LevelOfStaticAnalysis)'!='Medium' および '%(ClCompile.LevelOfStaticAnalysis)'!='Verbose'" Files="%(ClCompile.PrecompiledHeaderOutputFile)i" />