プログラマのつれづれなるままにプログラマのつれづれなるままに音宮志久が思ったことなどをネタにします。プログラムネタ・数学ネタがメインです。開発環境をVisualStudio2017へ移行してみた開発環境をVisualStudio2017へ移行してみたコメントを残す最新のVS2019ではないのが悲しいですが...。MovieLayerPlayerやらWindowModePatchを再度構築できる環境を整えるためにVisualStudio2017でビルドができるようにいろいろと設定やらファイルの文字コードやらを変更していってみるといろいろと大変なことがわかってしまって「ぎゃ~~~」と言いながら作業していました...。(VS2010から見たら)だいぶ変わってしまったVS2017でした結局ビルド環境を整えなおすのに丸2日かかってしまいました。ビルドに成功したのはMovieLayerPlayerの方でWindowModePatchはまだテストしていない状態です。こちらを先にやったのはほかのライブラリのビルドなどを考えた結果なのですが...。ディレクトリの設定はVS2010と変わらずこの辺はこちらの記事を参考にできます。自分で書いて自分で忘れているのが悲しいですね...。DirectXや自分で作ったライブラリ・インクルードファイルを参照する場合はこの設定がないとちょっと厳しいので気を付けましょう。DirectXのSDKはDirectX9系だと良くてもJune2010なのでインストールしたくないため仮想マシンで一度展開して必要なものだけコピーしていますので、そのためにもディレクトリの設定は設定ファイルからやらないとまずい、ということもあったりします。ソースコードの文字コード設定には気を付けて今回文字コードをShiftJIS(CodePage932)からUNICODE系へと変更しています。面倒なのが、ソースコード(cpp,hなど)はBOM付きUTF-8へリソースファイル(rc)はUTF-16へにしないとまずいということ。ソースコードにBOMを付け忘れると勝手にShiftJISと認識されて大量のエラーが出てきますので気を付けて。codepage)を削除して文字コードをUTF-16と認識させるという作業が必要になります。rcファイルではBOM付きUTF-8は認められない様子なので気を付けてください。ライブラリを構築するときの依存性設定がさらに厄介にVS2010では依存性を持たせるだけでは自動的にリンクがされず、[共通プロパティ]=>[Frameworkと参照]で依存するプロジェクトを参照として追加する必要がある、とは書いたのですが、これがVS2017になると、ソリューションエクスプローラから対象のプロジェクトを開くとソースファイルやヘッダファイルがあるところに「参照」となぜかこちらに参照設定が来ていますのでこれで設定しましょう。こちらに参照設定をすることでライブラリがリンクされるようになります。設定ミスなのかバグなのかわからない現象にはまってしまったのが、「依存しているライブラリをリンクしてくっつける場合、依存先(つまり子)のライブラリの構築時にプリコンパイル済みヘッダが設定されているとそのライブラリを使うプログラムを構築するときにLNK2019エラーが発生してリンクに失敗する」という現象でした。複数のライブラリをまとめて一つのライブラリとして扱う場合、親以外のライブラリにプリコンパイル済みヘッダを設定しているとプログラムを作るときに失敗する、という現象になります。何か設定で回避できるのかどうかよくわかりませんが、今のところ単純な回避策は「プリコンパイルを使用しないように設定してビルドする」以外思いつかないのが現状だったり。解決法を知っている人は教えてください...。bind2ndやらmem_funやらが非推奨になっています。言うならbind2ndやmem_funがfunctionalに移ったため、そちらをインクルードしないとコンパイルに失敗する、というものですが、どうせこの機会なのでbind2ndはbindとplaceholdersの組み合わせに、mem_funはmem_fnを使ったパターンに切り替えてしまいました。bind1stやbind2ndとかの限定版よりbindの方が使いやすいのでそちらに切り替えてしまいましょう。WindowsXP以前に必要としていたルーチンはもう必要ないよね...?ということで、いくつか片づけました。GetVersionExを使っていた部分はDeprecatedとなっていますのでVersionHelperのIsWindows系関数でバージョンを判定するように変更するとか、cpuidに関するルーチンを再構築したりとか、x86系のコンパイルでSSE2はもう当たり前だと思うので一部のプロジェクトで設定するとかしています。これで早くなるかどうかはよくわかりませんが...。いくつか最新機能も取り入れてみた私の場合はWindowModePatchなどの関係もあり、解像度の設定で解像度を文字列で表す、というのをやっているので4Kが3840×2160になる、とかWindows10に関するバージョン検知なども少し書き直しています。次回のWindowModePatchのアップデートはまずはVisualStudio2017でのコンパイル版にすることと、解像度を増やすことと、あとはスケーリング処理に関する部分を入れてみることでしょうか。いってもどれだけ時間が取れるのかは未定ですが。コメントをキャンセルメールアドレスが公開されることはありません。志久プログラムネタや思いついたり世間で話題になっている数学ネタを解説したりしています。プログラマとしては今年度(つまり2020年3月)までの復帰となるか、完全復帰となるか、別の仕事に戻るかは運と実力次第。ちなみに教育系のプログラムでもOKです。アクセスカウンタアクセス数:スポンサーリンク。