12

私はClangをWindowsで動作させ、最終的にQt Creatorを使用して開発し、それがVisualStudioの実行可能な代替手段であるかどうかを確認しようとしています。

LLVMとClang3.2(SVNリビジョン163238)をMinGW w64 (mingw-w64-bin_i686-mingw_20111220.zip)を使用してコンパイルし、に追加AddMinGWCPlusPlusIncludePaths("D:/Code/mingw/lib/gcc", "x86_64-w64-mingw32", "4.7.0");してgccのC++ヘッダーディレクトリを指定しました。clang/lib/Frontend/InitHeaderSearch.cpp現在までの方法。とにかく、Clangはそれらのヘッダーのほとんどを見つけているようです。

ただし、単純なHello Worldをコンパイルする場合:

#include <iostream>
int main(int argc, char* argv[])
{
  std::cout << "test\n";
  return 0;
}

使用するclang++ main.cppと、次のエラーが発生します。

In file included from main.cpp:1:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\iostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\ostream:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\ios:39:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\iosfwd:41:
In file included from D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\postypes.h:41:
D:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++\cwchar:45:10: fatal error:
      'wchar.h' file not found

したがって、Clangは、を含むいくつかのC ++ヘッダーをiostream検出しますが、検出に失敗しますwchar.h。Clangがそれを探していない場所wchar.hにあることがわかりました。.../include/c++\tr1これらのTR1ヘッダーを1つのディレクトリに移動しても、役に立ちません。

私はここで何を間違えましたか?gcc C ++ライブラリはClangと互換性がありませんか?明らかに、いくつかのTR1ライブラリがまだ標準に統合されていないためですか?Clang用の互換性のあるC++11ライブラリ(Windows用!)はどこで入手できますか?

4

4 に答える 4

1

Clang の設定ミス/パッチミス。バージョンを追加した場所のどこかに、MinGW-w64 パスも追加する必要があります。

ここで説明とともに提供するビルド済みバージョンを使用してください: Clang on Windows

MinGW-w64 ヘッダーと GCC 4.6.3 libstdc++ ヘッダーおよびライブラリで動作するように Clang を変更しました。現在、バージョン 3.2 でスタックしていますが、同様のパッチをソース (残念ながらパッチ ファイルを持っていません) に適用すると、それも使用できるはずです。

私が提供するものは、抽出し、PATH に追加して使用するだけです。そして32ビットのみ。

また、MinGW-w64 GCC の古いバージョンを使用していることにも注意してください。実際に更新する必要があります。

于 2013-12-13T12:58:20.210 に答える
0

「wchar.h」を手動でダウンロードして、Visual Studio プロジェクトのローカル作業ディレクトリに配置してみてください。私にとってはうまくいきます。

于 2013-09-24T05:41:58.903 に答える
0

clangに渡すと、複数のスイッチ-nostdinc++を含む include の正確な構成を指すことができるはずです。-Iこちらもお試しください-nostdsysteminc -nobuiltininc

また-v、コンパイル時にヘッダーを検索する場所と順序を示す必要があります。

clang++ -v -nostdinc++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++ -ID:/Code/mingw/lib/gcc/x86_64-w64-ming32/4.7.0./include/c++/tr1 foo.cpp
于 2013-12-13T12:31:23.807 に答える
0

Clang --version 3.4 (198054) および mingw-get.exe --version 0.6.2-beta-20131004-1 を使用して同じ問題に遭遇しました: MinGW を間違ってインストールしたことが判明しました: 最初にチェックボックスをオンにしただけでしたmingw-get.exe パッケージ選択ダイアログの 'mingw-gcc-g++' に対して、後で 'mingw32-base' を追加すると、この wchar_t.h 問題が解決されました: clang++.exe -std=c++11 コンパイルされた C++11 iostreamコードは問題ありません。

于 2014-03-28T17:21:25.763 に答える