Visual Studio 2017、バージョン 15.7、VCToolsVersion 14.14.26428 で C++ を開発しています。
dumpbin
静的ライブラリで実行すると、_MSC_VER のバージョンが予想とは異なることに気付きました。
私の問題を説明するために、単純なクラス testClass を含む静的ライブラリ testDumpbin.lib を作成しました。
testClass.h:
#pragma once
class testClass
{
public:
testClass();
private:
int n;
};
testClass.cpp:
#include "testClass.h"
#include <string>
#define STRING2(x) #x
#define STRING(x) STRING2(x)
#pragma message("")
#pragma message( "_MSC_VER (compiler verion) " STRING(_MSC_VER))
#pragma message("")
testClass::testClass()
{
n = 3;
}
_MSC_VER マクロを出力するプリプロセッサ行をいくつか追加しました。
このコードをデバッグ モードでコンパイルすると (プロパティでプリコンパイル済みヘッダーをオフにする – C/C++)、次のようになります。
1>_MSC_VER (compiler verion) 1914
ツールセット 14.14 を実行しているので、これは私が期待していたことです ( https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2Bも参照) 。
次に、使用を続けましたdumpbin
( C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\LaunchDevCmd.bat から起動できる VS 開発者コマンド プロンプトから実行できます):
dumpbin testDumpbinLib.lib /rawdata:1 > dumpbin.log
そして、そこに _MSC_VER = 1900 が見つかりました:
00000000: 20 20 20 2F 46 41 49 4C 49 46 4D 49 53 4D 41 54 /FAILIFMISMAT
00000010: 43 48 3A 22 5F 4D 53 43 5F 56 45 52 3D 31 39 30 CH:"_MSC_VER=190
00000020: 30 22 20 2F 46 41 49 4C 49 46 4D 49 53 4D 41 54 0" /FAILIFMISMAT
00000030: 43 48 3A 22 5F 49 54 45 52 41 54 4F 52 5F 44 45 CH:"_ITERATOR_DE
00000040: 42 55 47 5F 4C 45 56 45 4C 3D 32 22 20 2F 46 41 BUG_LEVEL=2" /FA
dumpbin
出力に _MSC_VER = 1914 がないのはなぜですか?
助けてくれてどうもありがとう!