Я только начал использовать clang-cl 3.7 на окнах. Я попытался скомпилировать свой код на моей машине WIN8.1 через Visual studio 2015 и через командную строку. Излишне говорить, что до этого, в том же cmd, я побежал vsvarsall
с опцией amd64
.clang-cl on WIndows 8.1 странная ошибка компиляции
Вот мой код:
#define UNICODE
#include <Windows.h>
#include <iostream>
int main() {
int a = 0;
if(0)
__asm _emit 0xE8
else
a=3;
if (IsDebuggerPresent())
MessageBox(
NULL,
(LPCWSTR)L"Debugger detected!!",
(LPCWSTR)L"!!!!!",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
return 0;
}
Вот что я положил в командной строке:
C:\Program Files\LLVM\bin>"C:\Program Files\LLVM\bin\clang-cl.exe" "C:\Users\Dav
id\Source\Repos\DY Obfuscator 2015-20162\DY Obfuscator\Source.cpp"
Компиляция в VS2015 работал нормально, но я не могу скомпилировать в командной строке, потому что я получаю эта ошибка:
C:\Program Files\LLVM\bin>"C:\Program Files\LLVM\bin\clang-cl.exe" C:\test\Sourc
e.cpp
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\cmath:656:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xtgmath.h:8:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xtr1common(207,22
) : error:
use of undeclared identifier 'char16_t'
struct _Is_integral<char16_t>
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xtr1common(213,22
) : error:
use of undeclared identifier 'char32_t'
struct _Is_integral<char32_t>
^
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\streambuf:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xiosbase:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocale:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\stdexcept:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\exception:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\type_traits:6:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstddef(405,14) :
error:
use of undeclared identifier 'char16_t'
struct hash<char16_t>
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstddef(411,14) :
error:
use of undeclared identifier 'char32_t'
struct hash<char32_t>
^
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\streambuf:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xiosbase:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocale:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\stdexcept:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xstring:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xmemory0:8:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\limits(611,33) :
error:
use of undeclared identifier 'char16_t'
template<> class numeric_limits<char16_t>
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\limits(901,33) :
error:
use of undeclared identifier 'char32_t'
template<> class numeric_limits<char32_t>
^
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\streambuf:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xiosbase:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocale:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\stdexcept:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xstring:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xmemory0:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xutility:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\utility:7:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\iosfwd(267,21) :
error:
use of undeclared identifier 'char16_t'
struct char_traits<char16_t>
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\iosfwd(276,21) :
error:
use of undeclared identifier 'char32_t'
struct char_traits<char32_t>
^
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\streambuf:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xiosbase:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocale:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\stdexcept:7:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(2623,22)
: error:
use of undeclared identifier 'char16_t'
typedef basic_string<char16_t, char_traits<char16_t>, allocator<char16_t> >
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(2623,53)
: error:
expected unqualified-id
typedef basic_string<char16_t, char_traits<char16_t>, allocator<char16_t> >
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(2625,22)
: error:
use of undeclared identifier 'char32_t'
typedef basic_string<char32_t, char_traits<char32_t>, allocator<char32_t> >
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(2625,53)
: error:
expected unqualified-id
typedef basic_string<char32_t, char_traits<char32_t>, allocator<char32_t> >
^
In file included from C:\test\Source.cpp:3:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xlocnum:10:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\streambuf:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INC
LUDE\xiosbase:6:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(1004,30)
: error:
use of undeclared identifier 'char16_t'
class _CRTIMP2_PURE codecvt<char16_t, char, _Mbstatet>
^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(1328,30)
: error:
use of undeclared identifier 'char32_t'
class _CRTIMP2_PURE codecvt<char32_t, char, _Mbstatet>
^
14 errors generated.
'char16_t' и' char32_t' является добавлением C++ 11, вы скомпилировали с соответствующими флагами? – YSC
какие флаги? Я так не думаю ... – user2554080
my bad http://stackoverflow.com/questions/25992401/how-to-add-std-c11-flag-to-clang-cl (clang по умолчанию для C++ 11 on Windows). – YSC