Действительно ли двоичная совместимость C ++ работает между VS 2015 и VS 2019? - PullRequest
0 голосов
/ 30 января 2020

Я использую библиотеку Google Test (построенную на наборе инструментов платформы v140 в Visual Studio 2015) в моем проекте vc ++, который также встраивает в набор инструментов платформы v140 в Visual Studio 2015. До этого момента все работало нормально.

Теперь, когда я перенесу свой проект в Visual Studio 2019 (на набор инструментов платформы v142), но хочу использовать ту же библиотеку тестов Google, которая была построена на v140, я получаю ниже ссылки на ошибки библиотеки тестов Google.

Ошибка LNK2019 неразрешенный внешний символ "publi c: __cdecl testing :: Message :: Message (void)" (?? 0Message@testing@@QEAA@XZ), на который ссылается функция "private: virtual void __cdecl VideoProbeGoogleTest :: BlobAutoDetector_BlobCreateGrayImageInRegion_Test :: TestBody (void)? ( TestBody@BlobAutoDetector_BlobCreateGrayImageInRegion_Test@VideoProbeGoogleTest@@EEAAXXZ) WAI_VideoProbeBlobTest

Ошибка LNK2019: неразрешенный внешний символ "publi c: класс std :: basic_string, класс std :: allocator> __cdecl testing :: Message :: GetString (void) const" (? *) 1009 *? AV? $basic_string@DU?$char_traits@D@std@@V? $allocator@D@2@@std@@XZ) упоминается в функции "private: void __cdecl testing :: AssertionResult :: App endMessage (тестирование класса :: Message const &) "(? AppendMessage@AssertionResult@testing@@AEAAXAEBVMessage@2@@Z))

Но, по мнению Microsoft, они обеспечивают двоичную совместимость между версиями visual studio 2015, 2017 и 2019. https://docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=vs-2019

Я что-то здесь не так делаю? почему совместимость не работает в моем случае?

...