GMock не связывается с Visual Studio 2019 - PullRequest
1 голос
/ 30 апреля 2020

Я добавил gmock в мой проект VS2019 C ++ через Nuget. Теперь я получаю сообщение об ошибке ниже, когда я пытаюсь скомпилировать. GoogleTest - это название моего тестового класса. Я новичок в C ++.

Ошибка состояния подавления Обнаружено несоответствие LNK2038 для _MSC_VER: значение "1800" не соответствует значению "1900" в тесте GoogleTest.obj

Что именно означает ошибка? Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Ошибка состояния подавления Обнаружено несоответствие LNK2038 для _MSC_VER: значение «1800» не соответствует значению «1900» в тесте GoogleTest.obj

Интересно, переносится ли ваш проект из другой старой версии VS в VS2019.

1) Если это так, сначала вы должны удалить старый gmock путь к библиотеке, который вы использовали ранее в Включить каталоги (Щелкните правой кнопкой мыши) в проекте -> Properties -> VC++ Directories), Дополнительные каталоги включения (Properties -> C/C++ -> General), Дополнительные зависимости (Свойства -> Linker -> Input).

2) Второй , установить пакет nuget gmock 1.10.0 по правому нажмите на свой проект -> Управление пакетом Nuget -> найдите gmock 1.10.0 и установите его.

enter image description here

3) Щелкните правой кнопкой мыши по своему проекту -> Properties -> Configuration Properties -> General -> убедитесь, что Набор инструментов Plarform равен VS2019 v142.

4) закрыть VS Instance, введите местоположение проекта и удалите любую папку Debug и Release, а затем перезапустите проект и выполните сборку заново.

Кроме того, , или вы можете попытаться создать новый проект C ++ в VS2019, установить последний пакет gmock nuget в ваш новый проект, а затем перенести ваш старый проект в новый проект и протестировать еще раз.

0 голосов
/ 01 мая 2020

Если вы используете один из предварительно скомпилированных пакетов NuGet (например, от Microsoft ), то вы должны убедиться, что его двоичные файлы совместимы с вашим проектом и VS. Похоже, пакет NuGet, который вы используете, был собран с другой версией VS.

В прошлый раз, когда я проверял, некоторые из предварительно собранных пакетов даже не содержали часть фреймворка gMock, но это возможно, к настоящему времени изменилось.

Лучше использовать один из предварительно не собранных пакетов NuGet, например от Google . Просто удалите текущий пакет NuGet и добавьте его из Google.

ПРИМЕЧАНИЕ. Если вы хотите поместить gMock в отдельный библиотечный проект, это может быть более сложным. Я написал вопрос / ответ после того, как обнаружил, что это было неочевидно. Смотрите ответ здесь .

...