tkntrec版EDCBをVS2022でビルドしようとしてエラーが出たので
その解決法を書いておく
まずGitからソースを落としてくる(コミット fe44d0f)
DocumentフォルダのEDCB_ALL.VS2015.slnを開いてソリューションの再ターゲット→最新Verを選ぶ
するとEpgTimerの再ターゲットに関するエラーが出るがこれはプロジェクトファイルが想定している.NETのSDKバージョンがインストールされてないためなのでインストールする
ただ必要な.NET SDKバージョンは4.5を要求するがすでにサポート切れとなっているのでなるべく最新のものを使いたい
この記事の時点では4.8.1が最新なのでVS2022のインストーラーから
.NET Framework 4.8.1 SDK
.NET Framework 4.8.1 ターゲッティングパック
をインストールする
さらにEpgTimerフォルダのEpgTimer.csprojを開き使用する.NETバージョンを指定する
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
これを
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
に書き換えて保存
これで再ターゲットのエラーは解決した
次にビルドを行うと
C1083: include ファイルを開けません。’SDKDDKVer.h’:No such file or directory
というエラーが出るのだがこれはWindows10 SDKがインストールされてないために起こる
MSのSDK配布ページより Windows 10 SDK バージョン 2104 (10.0.20348.0) をインストール
更にビルドエラーが出て
MSB8037
デスクトップ C++ platform アプリ用の Windows SDK バージョン 10.0.20348.0 が見つかりませんでした。 必要なバージョンの Windows SDK をインストールしてください。
となりビルドできない
エラーの文言通りだとWindows SDKがインストールされてない事になるがさっきWindows 10用のSDKを入れているのになぜエラーが出るのか困惑
そこでVS2022のインストーラーを開き個別のコンポーネント一覧にWindows 10 SDK (10.0.20348.0)を発見したのでこちらもインストール
その後改めてビルドすると今度こそ完璧にビルドできた
どうやらMS公式サイトのSDKインストーラーとVS2022インストーラー経由のSDKインストール両方あってどっちもやらないといけないみたい
他にもMSVCのSpectre軽減ライブラリとやらを使ってみようと思ってインストールしてみた
ビルドするには各プロジェクトの プロパティ→ C/C++ →コード生成より
Spectre 軽減策 → 有効 (/Qspectre)
とすることによSpectre軽減のコード生成ができるようになる
デメリットはほぼないそうなので今後古い環境で仕様する場合には積極的に使ってみようと思う
以上






コメントを残す