私は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
'path'の代わりに' include'環境変数を見てみてください。 –
私は前もって何らかの自動発見プロセスに従っていなければならないと思っていますが、その奇妙なことがあります。 –