2016-05-28 4 views
0

私はClang 3.7をインストールしたとき、パス内の2つのディレクトリの両方が存在する限り、GCCインストールのSTLヘッダーを見つけることができます。Wangows上のClangはGCCの代わりにVCヘッダーを見つけた

今、私は、コンパイラが、それは次のように

私のパスであっても、パスではないという事実にもかかわらず、Visual Studioのヘッダを見つけ続けるクラン3.8がインストールされていること:

PATH=whatever;G:\Compilers\LLVM\bin;g:\compilers\Mingw64-64bit\bin 

編集1

私は正しいパスを含めどのような考えを知ってましたが、私はこれらを発見したCodeliteでコンパイルしようとした:

を今渡して、このような2

編集

G:\Compilers\Mingw64-64bit\x86_64-w64-mingw32\include\c++\bits/stringfwd.h:63:33: error: use of undeclared identifier 'char16_t' 
    template<> struct char_traits<char16_t>; 
          ^

として3210

"-IG:\\Compilers\\Mingw64-64bit\\x86_64-w64-mingw32\\include\\c++" "-IG:\\Compilers\\Mingw64-64bit\\x86_64-w64-mingw32\\include\\c++\\x86_64-w64-mingw32" "-IG:\\Compilers\\Mingw64-64bit\\lib\\gcc\\x86_64-w64-mingw32\\5.1.0\\include" "-IG:\\Compilers\\Mingw64-64bit\\lib\\gcc\\x86_64-w64-mingw32\\5.1.0\\include-fixed" "-IG:\\Compilers\\Mingw64-64bit\\x86_64-w64-mingw32\\include" "-IG:\\Compilers\\Mingw64-64bit\\x86_64-w64-mingw32\\include\\c++\\backward" 

私はまた、しかし、C++ライブラリを使用して非常に簡単なプログラムを方言フラグ--std=c++11

を使用していることは私にエラーを与えていますx86_64-w64-mingw32が推奨するように、自動検出プロセスは機能しているように見えますが、生成された実行可能ファイルはフリーズします。

私は私が使用していたコード例は、この

#include <iostream> 

int main() 
{ 
    int arr[] = {1, 2, 3, 4, 5}; 
    for(auto el : arr) 
    { 
     std::cout << el << std::endl; 
    } 
    return 0; 
} 

あるVS2015クランツールセットを使用する

をしようとしたとき、私は今でコンパイルしています同じ見つかりました:

clang++ -v --target=x86_64-w64-mingw32 hello.cpp -o test.exe -std=c++14 

私はDependency Walkerで生成された実行ファイルを見て、それが64ビットコンパイルとリンクとして表示されています"g:\Compilers\Mingw64-32Bit\bin\libstdc++-6.dll"

私は、次のステップでは、32ビットバージョンをコンパイルしようとするだろうと思うが、私はちょうど32を生産しているようだclang++ hello.cpp -o main.exe -std=c++14 --target=i686-pc-mingw32 -v

を試してみましたが、その

の正しいターゲット名を見つけることができないようちょうどフリーズ

私は32ビットclangを指すようにパスを更新しました。

編集は3

私は混乱を見つけることは、私がターゲットとしてx86_64版-W64-MINGW32を渡されるまで、私は両方のGCCのパスを通過するのに非常に類似したエラーを得たことで、MSVCの両方のデフォルトのターゲットからそれが保持されるため、char16_tと似たタイプの

私はそれだけで多くの問題を作成し、動作するように思われるのターゲットを渡すと、その種なくなり

をVCコンパイラのエラーを修正する可能性がある場合、私はしようと思ったこれを見に関係しているように見えましたlibsに尋ねる私は正しいもの

を知らないとへのリンクは、だから私は試してみました:

clang++ hello.cpp -o main-vc.exe -std=c++14 --target=x86_64-pc-windows-msvc19.0.0 -v 
-Xlinker "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64\libcmt.lib" 
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64\libcpmt.lib" 
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64\libvcruntime.lib" 
"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64\libucrt.lib" 

私は正しいディレクトリを渡すために何であったかわかりません。

私は、私はこのエラーに

LIBCMT.LIB(thread_safe_statics.obj)取得していて、別のlibにファイルを渡す必要が感じている

:エラーLNK2019:未解決の外部シンボル__imp_CloseHandle

+0

'path'の代わりに' include'環境変数を見てみてください。 –

+0

私は前もって何らかの自動発見プロセスに従っていなければならないと思っていますが、その奇妙なことがあります。 –

答えて

1

を変更しましたターゲット? VCは新しいデフォルトです。 WELとしてリンカを忘れてはいけない

打ち鳴らす++ --target = x86_64の-W64-MINGW32 TEST.CPP

:x64の、mingwのために、この(例)を使用します。

+0

これらの目標値はどこから来ますか?私は彼らへの参照を見つけることができないようです –

関連する問題