|
|
vs2019 で、プリコンパイル済みヘッダー の構成が変更された。 |
H.Kamifuji . |
vs2019 移行への調査状況では、主に旧バージョンからの互換性についての評価を行ってきました。久しぶりに vs2019 で、新規作成 MFC アプリ(apache 用の国別拒否リスト作成)を作成しました。 テンプレートまでは、問題なくプロジェクトを作成できたが、旧バージョンで作成された汎用クラスを追加した時点で、ビルドが失敗しました。 後に、詳細を記載しますが、vs2019 から、プリコンパイル済みヘッダー ファイルの構成が変更されていることが分かりました。 |
旧バージョンで作成された汎用クラスを追加した時点で、下記のようなメッセージを出力して、ビルドが失敗します。1>------ すべてのリビルド開始: プロジェクト:IP_Filter, 構成: Release Win32 ------ 1>pch.cpp 1>IP_Filter.cpp 1>IP_FilterDlg.cpp 1>MyFile.cpp 1>E:\ ... \IP_Filter\IP_Filter\MyFile.cpp(2028,1): error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。 '#include "pch.h"' をソースに追加しましたか? 1>プロジェクト "IP_Filter.vcxproj" のビルドが終了しました -- 失敗。 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ========== 上記のメッセージは、何か #include ヘッダファイルが見つからないと言っているようだ。通常では、「不明な EOF が見つかりました。」までだが、この事例では、「'#include "pch.h"' をソースに追加しましたか?」とソースの修正候補までもが表示されています。 新規作成時に生成された pch.h を視ると vs2017 以前までの stdafx.h に相当する「プリコンパイル済みヘッダー」のようです。そこで、旧バージョンで作成された汎用クラス MyFile.cpp の先頭部を下記のように修正しました。 // MyFile.cpp : インプリメンテーション ファイル // // // #include "stdafx.h" #include "pch.h" #include "MyFile.h" #include <string.h> これで、無事にビルドできました。 [ 目次 ] |
vs2019 で、プリコンパイル済みヘッダーの構成が下記のように変更されたようです。
アプリケーションのクラス IP_Filter.cpp の先頭部には、下記のように生成されています。 // IP_Filter.cpp : アプリケーションのクラス動作を定義します。 // #include "pch.h" #include "framework.h" #include "IP_Filter.h" #include "IP_FilterDlg.h" ところが、#include "framework.h" は、pch.h からインクルードされているので不要と思われます。 // IP_Filter.cpp : アプリケーションのクラス動作を定義します。 // #include "pch.h" // #include "framework.h" #include "IP_Filter.h" #include "IP_FilterDlg.h" 上記のように、#include "framework.h" をコメントアウトしても、無事にビルドできました。 実装ファイル IP_FilterDlg.cpp も同様に、#include "framework.h" をコメントアウトしても、無事にビルドできました。 [ 目次 ] |