2017-10-12 1 views
1

Windows 10 (32 비트 OS, x86 프로세서)에서 소스에서 컴파일 된 clang 4.0.0을 사용하고 있습니다. 나는 llvm 형식의 코드 llvm에 내 cpp 코드를 컴파일하려하고있다.Windows에서 Clang ++ 4.0.0 컴파일 오류가 발생했습니다.

#include <windows.h> 
#include <tlhelp32.h> 
#include <fstream> 
#include <mapi.h> 
#include <memory> 
#include<stdio.h> 

/* Function to calculate x raised to the power y */ 
int power(int x, unsigned int y) 
{ 
    if (y == 0) 
     return 1; 
    else if (y%2 == 0) 
     return power(x, y/2)*power(x, y/2); 
    else 
     return x*power(x, y/2)*power(x, y/2); 
} 

/* Program to test function power */ 
int main() 
{ 
    int x = 2; 
    unsigned int y = 3; 

    printf("%d", power(x, y)); 
    return 0; 
} 

이 그냥 샘플 코드이지만, 나열된 헤더 파일을 포함하는 모든 C++ 코드에서 동일한 동작입니다 : 여기에 연타를 사용하여 컴파일에 실패 샘플 코드입니다. 나는 LLVM의 IR 코드를 컴파일하려면 다음 명령을 사용

C:\Sample>clang++ -emit-llvm -S assiral.cpp -o assiral.ll 
In file included from assiral.cpp:3: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:7: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\cmath:617: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xtgmath.h:9: 
C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xtr1common:204:22: error: 
use of undeclared identifier 'char16_t' 
struct _Is_integral<char16_t> 
^ 
C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xtr1common:210:22: error: 
use of undeclared identifier 'char32_t' 
struct _Is_integral<char32_t> 
^ 
In file included from assiral.cpp:3: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:6: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\exception:7: 
In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\type_traits:6: 
C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstddef:257:2: error: 'auto' 
    return without trailing return type; deduced return types are a C++14 extension 
auto _Unfancy(_Ptrty _Ptr) 
^
    In file included from assiral.cpp:3: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:8: 
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\limits:612:33: error: use of 
    undeclared identifier 'char16_t' 
    template<> class numeric_limits<char16_t> 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\limits:902:33: error: use of 
    undeclared identifier 'char32_t' 
    template<> class numeric_limits<char32_t> 
^
    In file included from assiral.cpp:3: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xutility:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\utility:7: 
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\iosfwd:254:21: error: use of 
    undeclared identifier 'char16_t' 
    struct char_traits<char16_t> 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\iosfwd:263:21: error: use of 
    undeclared identifier 'char32_t' 
    struct char_traits<char32_t> 
^
    In file included from assiral.cpp:3: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:10: 
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xutility:698:2: error: 
    'auto' return without trailing return type; deduced return types are a C++14 extension 
auto _Unchecked_n(_Iter _Src, _Diff) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xutility:742:2: error: 
    'auto' return without trailing return type; deduced return types are a C++14 extension 
auto _Unchecked_n_backward(_Iter _Src, _Diff) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xutility:1142:12: error: 
    deduced return types are a C++14 extension 
constexpr decltype(auto) _Operator_arrow(_Iterator&& _Target, false_type) 
^
    In file included from assiral.cpp:3: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:6: 
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:356:2: error: 
    'auto' return without trailing return type; deduced return types are a C++14 extension 
auto _Const_cast(_Ptrty _Ptr) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:366:2: error: 
    'auto' return without trailing return type; deduced return types are a C++14 extension 
auto _Const_cast(_Ty * _Ptr) 
^
    In file included from assiral.cpp:3: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\fstream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\includem:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ostream:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\ios:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 
    In file included from C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:75:2: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Start_at; ; ++_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:119:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - _Needle_size); ; --_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:144:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - 1); ; --_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:169:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:188:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - 1); ; --_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:213:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try) 
^
    C:\Program Files\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xstring:233:3: error: 
    statement not allowed in constexpr function 
    for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try) 
^
    fatal error: too many errors emitted, stopping now [-ferror-limit=] 
    20 errors generated. 

내가 명령을 실행 한 후 기대하는 바이트 코드 파일이 생성하는 것입니다 : 컴파일에

clang++ -S -emit-llvm assiral.cpp -o assiral.ll 

나는 다음과 같은 오류가 발생합니다 (.ll 파일). 나는 그들이 플래그를 소개하는 많은 글을 보았다 : '-fms-compatibility-version = 19'. 그러나 추가 된 플래그는 알려지지 않은 인수로 표시됩니다. MSVS 2017에서 일하고 있습니다. 아마도이 플래그를 잘못 사용하고있을 수 있습니다. 그러나 나는 하루 동안이 난국에 있었다. 어떤 도움이나 제안이라도 대단히 감사하겠습니다.

+0

최소한의 편집 가능한 예를 포함하십시오. – OmnipotentEntity

+0

질문을 업데이트 해 주셔서 감사합니다. Windows 특정 헤더를 제거하는 약간 수정 된 소스를 사용하면 Linux에서 잘 컴파일됩니다. 그래서 문제 해결을 시작할 것입니다. 포함 항목을 재정렬하고 필요없는 항목을 제거하십시오. – OmnipotentEntity

+0

정확히 무엇을 의미합니까? 헤더 문제로 인해 컴파일 단계에 도달하지 않습니다. –

답변

0

이것은 환경 변수 INCLUDE의 헤더 파일에 올바른 경로를 추가하여 수정되었습니다. 경로를 수정하면 대부분의 오류가 해결되었습니다. 여기에는 windows.h와 같은 특정 헤더를 참조하는 C++ 파일을 컴파일 할 때 파일을 찾을 수없는 오류가 포함됩니다. 또한 또 다른 문제를 해결할 수 List all environment variables from command line?

: 같은 수행하는 방법에 대한

링크 LIBPATH 환경 변수를 설정하여

link fatal error lnk1104 cannot open file 'libcmt.lib' 

는 LIBCMT.LIB의 올바른 위치를 가리 키도록 파일. 나는 다음에서 나를 찾았다 :

C:\Program Files\Microsoft Visual Studio 14.0\VC\lib 

이 사소한 문제로 나는 꽤 많은 시간을 보내고있다. 이것이 누군가에게 같은 문제를 안겨주기를 바랍니다.

관련 문제