转储和_MSC_VER

时间:2019-01-16 13:40:20

标签: c++ visual-c++ dumpbin

我正在Visual Studio 2017版本15.7,VCToolsVersion 14.14.26428中开发C ++。

我注意到,当我在静态库上运行dumpbin时,_MSC_VER的版本与预期不同。

为说明我的问题,我创建了一个静态库testDumpbin.lib,其中包含一个简单的类testClass:

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(可以从VS开发人员命令提示符运行,可以从C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ Tools \ LaunchDevCmd.bat):

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?

非常感谢您的帮助!

0 个答案:

没有答案