VS2003 から VS2015 へ(C++ MFCアプリケーション) | tomiのブログ

tomiのブログ

ブログの説明を入力します。

Visual Studio 2003 で MFCアプリケーションを作っていたが、

最近、Visual Studio 2015 でMFCアプリケーションができるのを知ってVS2015に移行することにした。


どのくらいの手間なのか、正しい手順はあるのか、Web で検索してみたが VS2003 から VS2015 への移行に参考になるサイト、ページは見つからなかった。
では、とにかくやてみるしかない。

プロジェクトは MFC を使った Visual C++ のアプリケーション。


.Windows XP の Visual Studio Projects/・・・/project からフォルダーごと Windows 10 の Visual Studio 2015/Projects の下にコピーする。

 

.フォルダー「Debug」と「Release」はビルドで生成されるので予め削除しておく。

 

.VS2015 の「プロジェクトを開く...」から ~.sln を開く。


.「プロジェクトとソリューションの変更をレビュー」の警告画面がでるので[OK]。



「.../Users/%E5%E4%A7・・・・・/Documents/ Vis...が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。」のメッセージ。

 

同時にすべてのヘッダーとソースファイルが自動的に一部修正された。


.[OK]をクリック。

.「▶ ローカルWindowsデバッガー」でビルドを実行する。

 

「エラー C1189 #error: MFC does not support WINVER less than 0x501.
Please change the definition of WINVER in your project propaties or precompiled Header.」のエラー。



.stdafx.h の以下の部分(Windowsのバージョン)をWindows 10 の値に修正する。

 

または

stdafx.h を VS2015 で生成された他のプログラムのものと差し替える。

stdafx.h を差し替えた場合は、targetver.h」も stdafx.h と同じフォルダーにコピーしておく。

.ビルドして実行してOK。

(以下はアプリの画面)



■ ビルドでは、型名のない記述が数か所あってエラーになった。
それらは VS2003 ではエラーで引っかからなかったがVS2015では発見できたようだ。

 

また、警告として strcpy 、strncpy 、localtime をstrcpy_s 、strncpy_s 、localtime_s を使えと警告があったが、仕様がかなり違うのがあり、修正はかなり面倒だった。


■ 結果的に移行の手順は以下の通り。

1.移行するプロジェクトをフォルダーごとコピー。

2.フォルダー「Debug」と「Release」を削除。


3.<プロジェクト名>.sln を開く。
  基本的なファイル変換が実行される。

4.stdafx.h のWindowsのバージョン部分を修正。

または、stdafx.h を VS2015 で他のプログラムで生成したものと差し替え、targetver.h も VS2015 で他のプログラムで生成したものからコピーしておく。

 

5.ビルドを実行。

6.警告の出た古い関数を置き換え。

VS2003からVS2017はこちら(2019.2.24)

以上