C プラグマ 新しいページはコチラ
提供: yonewiki
(→#pragma comment(compiler)) |
(→#pragma comment(compiler)) |
||
121行: | 121行: | ||
Visual Studioのリンク処理では実行ファイル(.obj)に記述されているコンパイラのバージョンに不一致があればエラーとなります。したがって、2つ以上のヘッダファイルがあるプロジェクトで、一度ビルドしたあと、このプラグマを一つのヘッダファイルだけに記述してビルドした場合、objファイルの中のコンパイラバージョンの記述に不一致が発生し、エラーが発生します。リビルドするとこの問題は解決します。逆にある一つのヘッダファイルだけにこのプラグマがある状態で、一度ビルドしたプロジェクトから、このプラグマを消すと同じようにエラーが発生します。この場合もリビルドすることによってコンパイラバージョン情報に関する整合性エラーが解決します。 | Visual Studioのリンク処理では実行ファイル(.obj)に記述されているコンパイラのバージョンに不一致があればエラーとなります。したがって、2つ以上のヘッダファイルがあるプロジェクトで、一度ビルドしたあと、このプラグマを一つのヘッダファイルだけに記述してビルドした場合、objファイルの中のコンパイラバージョンの記述に不一致が発生し、エラーが発生します。リビルドするとこの問題は解決します。逆にある一つのヘッダファイルだけにこのプラグマがある状態で、一度ビルドしたプロジェクトから、このプラグマを消すと同じようにエラーが発生します。この場合もリビルドすることによってコンパイラバージョン情報に関する整合性エラーが解決します。 | ||
+ | |||
+ | |||
+ | 自分は現在も使っている開発環境としてVisual Studio Proffesionalの2010~2013までの各バージョンのライセンスを持っていますが、VisualStudio2012をメインに使っています。試しにこのプラグマを使ってみたらobjファイルの末尾に | ||
+ | |||
+ | |||
+ | Compiler Version 17.00.61030.0 | ||
+ | |||
+ | |||
+ | となるような、ASCIIコードが挿入されました。.objファイルはバイナリーファイルですので、ASCIIコードとして読み取れる部分とそうでない部分とが混在するファイルになっています。 | ||
====#pragma comment(linker, [” ”])==== | ====#pragma comment(linker, [” ”])==== |