まず第一に、私は "Getting Started:Building and Running Clang" に従いました。特に、「Visual Studioの使用」セクションに従って作成しました。つまり、Visual Studio 2010を使用してビルドしました。
次に、MinGWディストリビューションへのインクルードパスとライブラリパスを手動で設定しました。
コンパイルしようとしている単純なプログラム:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
コンパイラーから次のフィードバックを受け取ります。
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ios:38:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iosfwd:41:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\bits/postypes.h:41:
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:144:11: error: no member named 'fgetws' in the global namespace
using ::fgetws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:146:11: error: no member named 'fputws' in the global namespace
using ::fputws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:150:11: error: no member named 'getwc' in the global namespace
using ::getwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:151:11: error: no member named 'getwchar' in the global namespace
using ::getwchar;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:156:11: error: no member named 'putwc' in the global namespace
using ::putwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:157:11: error: no member named 'putwchar' in the global namespace
using ::putwchar;
~~^
6 errors generated.
Build error occurred, build is stopped
Time consumed: 646 ms.
明白な質問は-なぜ私はこれを手に入れるのですか?
さらに、詳細を知りたいので、ClangのWebサイトでは非常に簡潔な情報を提供しています。誰かに次の質問を明確にしてもらえると思いました。
clang/lib/Frontend/InitHeaderSearch.cpp
にハードコードする必要がありますか、それともスキップして、上のスクリーンショットのように後で「-I」オプションを使用してこれらのパスを指定できますか?MSVSでClangをビルドすると、デフォルトのVSインクルードパスが自動的に検索され、それらのヘッダーが取得されます。これがlibstdc ++ヘッダーがエラーを生成する理由です。それらはVSヘッダーに存在しないC関数をインポートしています。 VSでC++にClangを使用することは今のところ禁止されていません。ClangにABI(名前のマングリングなど)機能がないためにリンク障害が発生します。 MSVS Clangを引き続き使用する場合は、MinGWヘッダーを指定しないでください。 VSヘッダー(C++を含む)を解析しますが、リンクに失敗するだけです。
[〜#〜] edit [〜#〜]:Clangを伴うdw2バージョンのGCC(32ビットのみ)をビルドしました。このビルドでは例外が機能するため、Windows上でClangを使用して実際のC++のものをビルドできます。 ここでバージョン3.2を取得 。
明白な答えは、-fno-ms-compatibilityをclang ++:Pに送信するのを忘れたことです。
私はVSを使用してWindowsアプリの開発を行っており、clang + CodeBlocksを使用してプラットフォームのドメインに中立な側面を共有しています。