Visual C++ ランタイムのバージョン不一致によるバイナリ互換性の問題
こんにちは、Japan Developer Support Core チームの松井です。
今回は、古い Visual C++ ランタイムによるバイナリ互換性の問題について、msvcp140.dll!mtx_do_lock でアクセス違反が発生する事象を一例として、確認すべきランタイムのバージョンと読み込み元を説明します。
はじめにVisual C++ 2015 以降の v14 系ランタイムにはバイナリ互換性があります。ただし、アプリケーションを構成するコンポーネントのうち、最も新しいビルド ツールと同じか、それより新しい Visual C++ ランタイムを使用する必要があります。
この条件を満たさない構成では、バイナリ互換性に関するさまざまな問題が発生する可能性があります。本記事で扱う、新しい MSVC ツールセットでビルドしたバイナリが古い msvcp140.dll を読み込み、std:...