Использование Qt 5.15.0 в Visual Studio 2019 с установленным расширением Qt VS Tools
.
#include <QVector>
int main()
{
QVector<int> myList;
return 0;
}
Приведенная выше минимальная программа собирается в режиме RELEASE, но выдает ошибки компоновки в режиме DEBUG:
error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "void __cdecl std::_Load_barrier(enum std::memory_order)"
error LNK2019: unresolved external symbol __imp__CrtDbgReport referenced in function "void __cdecl std::_Load_barrier(enum std::memory_order)"
fatal error LNK1120: 2 unresolved externals
Я наткнулся на этот вопрос, который дал мне подсказку о конфигурации сборки. В Project Properties > Qt Project Settings
мне не удалось определить настройку, которую необходимо изменить.
Как решить эту проблему?
Обновление 1
Некоторые дополнительные детали конфигурации (предлагаемые в комментарии):
- Простой файл Visual Studio
.sln
(без CMake), который загружает проект.vcxproj
- Qt скачан и установлен на
C:\Qt
Обновление 2
Дополнительные сведения из файла проекта Visual Studio (.vcxproj
) на основе комментария. Вот как ссылаются на Qt для сборок Debug/Release:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
<QtInstall>msvc2019_64</QtInstall>
<QtModules>core</QtModules>
<QtBuildConfig>debug</QtBuildConfig>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
<QtInstall>msvc2019_64</QtInstall>
<QtModules>core</QtModules>
<QtBuildConfig>release</QtBuildConfig>
</PropertyGroup>
.sln
, который загружает.vcxproj
. Qt был загружен и установлен в C:\Tmp\Qt. Тестировал Qt и смог использоватьQString
,QDir
и некоторые другие классы в режимах RELEASE и _DEBUG.QVector
был первым, кто не связался. - person AlainD   schedule 21.07.2020main
сvoid
в качестве возвращаемого типа в С++ (если вы, конечно, не используете встроенную систему), поскольку у вас не будет представление о том, как ваша программа завершила работу в случае сбоя. Вы можете вернутьEXIT_SUCCESS
илиEXIT_FAILURE
, определенные вstdio.h
, или что-то подобное. Процитируем Бьерна Страуструпа: › Определение void main() не является и никогда не было C++ и даже не C. en.cppreference.com/w/cpp/language/main_function - person Erel   schedule 21.07.2020QT += core
строка? - person Alexander V   schedule 21.07.2020.vcxproj
. Я обновлю вопрос, указав подробности о том, как там упоминается Qt. - person AlainD   schedule 21.07.2020