2017-10-12 6 views
1

Windows 10(32ビットOS、x86プロセッサ)上でソースからコンパイルされたclang 4.0.0を使用しています。私はフォーマットllvm irコードに私のcppコードをコンパイルしようとしています。Clang ++ 4.0.0 Windowsでのコンパイルエラー

#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コードにコンパイルし、次のコマンドを使用します。コンパイルで

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

私は次のエラーを取得する:私は、コマンドを実行した後に何を期待

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. 

は、生成されたバイトコードファイルを持つことです(.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?

あなたはまた別の問題が解決できます。LIBCMT.LIBの正しい場所を指すようにLIBPATH環境変数を設定することにより、

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

をファイル。私は私のものを見つけました:

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

これらの些細な問題は私には分かりませんでした。これが誰かに同じ問題を救うことを願っています。

関連する問題