首先,我遵循了“入门:build立和运行Clang” 。 特别是,我已经根据“使用Visual Studio”部分构build它。 换句话说,我已经使用Visual Studio 2010构build了它。
其次,我已经手动设置包含和库pathMinGW分布:
我试图编译的简单程序:
#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/lib/Frontend/InitHeaderSearch.cpp
硬编码包含path,或者我可以跳过它,而是通过“-I”选项指定那些path,就像我在上面的截图中所做的那样? 如果您使用MSVS构建Clang,它将自动搜索默认的VS包含路径,并将这些标头拉入。 这是libstdc ++头文件产生错误的原因:它们正在导入VS头文件中不存在的C函数。 使用C ++的Clang for VS现在是不可行的:由于在Clang中缺少ABI(名称修改和其他)功能,您将会遇到链接故障。 如果您仍想使用MSVS Clang,请勿将其指向MinGW标题。 它会解析VS头(包括C ++),它只是无法链接。
编辑 :我已经建立了GCC(32位只)伴随叮当的dw2版本。 在这个构建中异常工作,所以你现在可以在Windows上用Clang构建真正的C ++东西。 在这里获取版本3.2 。
显而易见的答案是你忘了发送-fno-ms兼容性到铛++:P
我正在使用VS的Windows应用程序开发,并使用铿锵+ CodeBlocks共享方面中立的平台的领域。