Dumpbin и _MSC_VER - PullRequest
       73

Dumpbin и _MSC_VER

0 голосов
/ 16 января 2019

Я занимаюсь разработкой C ++ в Visual Studio 2017, версия 15.7, VCToolsVersion 14.14.26428.

Я заметил, что когда я запускаю 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. летучая мышь):

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

Почему это не _MSC_VER = 1914 в выводе dumpbin?

Большое спасибо за вашу помощь!

...