Visual C ++ 2019 type_traits ошибки - PullRequest
       15

Visual C ++ 2019 type_traits ошибки

0 голосов
/ 29 апреля 2020

У меня следующая проблема. У меня есть код C ++ 17 (консольное приложение), который компилируется и запускается без проблем на Linux с использованием компилятора g ++. Когда я попытался скомпилировать его в VS C ++ 2019 Community Edition, он дал мне кучу ошибок о чертах типа и xutilities, как показано ниже (см. Ниже). Я знаю, что код, который я пытаюсь скомпилировать, является правильным (он использует одну внешнюю библиотеку "Armadillo" для матричной алгебры). Я считаю, что что-то не так с моей конфигурацией VS C ++, но я не смог найти решение в inte rnet, как это исправить (обратите внимание, мой код не содержит никаких включений std :: type_traits). Я запутался, почему я получаю эти ошибки. Опять же, программа компилируется и запускается без проблем в Linux. Любые идеи / предложения будут с благодарностью

 [1/30] C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\HostX64\x64\cl.exe  /nologo /TP  -I..\..\..\include -I..\..\..\libs\csv\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1   -std:c++17 /showIncludes /FoCMakeFiles\a.exe.dir\src\Main.cpp.obj /FdCMakeFiles\a.exe.dir\ /FS -c ..\..\..\src\Main.cpp
  FAILED: CMakeFiles/a.exe.dir/src/Main.cpp.obj 
  C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\HostX64\x64\cl.exe  /nologo /TP  -I..\..\..\include -I..\..\..\libs\csv\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1   -std:c++17 /showIncludes /FoCMakeFiles\a.exe.dir\src\Main.cpp.obj /FdCMakeFiles\a.exe.dir\ /FS -c ..\..\..\src\Main.cpp
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(103): error C2065: '_IS_FUNCTION': undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(103): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(113): error C2146: syntax error: missing ';' before identifier '_CLASS_DEFINE_CV_REF_NOEXCEPT'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2065: '_Ty': undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2923: 'std::_Is_function': '_Ty' is not a valid template type argument for parameter '_Ty'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2955: 'std::_Is_function': use of class template requires template argument list
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(92): note: see declaration of 'std::_Is_function'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2059: syntax error: 'function-style cast'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2143: syntax error: missing ';' before '{'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2447: '{': missing function header (old-style formal list?)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(138): error C2065: '_IS_MEMFUNPTR': undeclared identifier

Программа компилируется, если я удаляю все include_directories из файла CMakeList.txt. Если я добавлю include_directories («include») в CMakeList.txt, программа не сможет скомпилироваться, даже если каталог include пуст и библиотеки не используются. Итак, как включить библиотеки в cmake в VS на Windows?

# CMakeList.txt : CMake project for project, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)
project ("project")
include_directories("include")  # <-- THIS CAUSING THE PROBLEM

# Add source to this project's executable.
add_executable (project "project.cpp" "project.h")
target_compile_features(project PUBLIC cxx_std_17)
...