Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 叮当声和C++;11个标题_C++_Windows_C++11_Mingw_Clang - Fatal编程技术网

C++ 叮当声和C++;11个标题

C++ 叮当声和C++;11个标题,c++,windows,c++11,mingw,clang,C++,Windows,C++11,Mingw,Clang,我试图让Clang在Windows上工作,最终与Qt Creator一起开发,看看它是否是Visual Studio的可行替代品 我得到LLVM和Clang 3.2(SvN修订版163238),使用(明文W64-BIN II66MIWW2012011220.zip)编译,并通过添加 AddMinGWCPlusPlusIncludePaths(“D//CHIV/WIW/LIB/GCC”、“X86Y64-W64-MIW32”、“4.7.0”),指向GCC的C++头目录;code>到clang/lib

我试图让Clang在Windows上工作,最终与Qt Creator一起开发,看看它是否是Visual Studio的可行替代品

我得到LLVM和Clang 3.2(SvN修订版163238),使用(明文W64-BIN II66MIWW2012011220.zip)编译,并通过添加<代码> AddMinGWCPlusPlusIncludePaths(“D//CHIV/WIW/LIB/GCC”、“X86Y64-W64-MIW32”、“4.7.0”),指向GCC的C++头目录;code>到

clang/lib/Frontend/InitHeaderSearch.cpp
,尽管我认为这可能不是最新的方法。不管怎么说,叮当声似乎找到了大部分的标题

但是,在编译简单的Hello World时:

#include <iostream>
int main(int argc, char* argv[])
{
  std::cout << "test\n";
  return 0;
}
<> Clang显然发现了几个C++标题,包括代码> IoSturi,但是没有找到<代码> WCHAR .H./C>。原来,
wchar.h
位于
../include/c++\tr1
中,Clang不会在其中查找它。将那些TR1头向上移动一个目录也没有帮助


我做错了什么?GCC C++库与Clang不兼容,因为它还没有将一些Tr1库集成到标准中吗?在哪里可以为Clang(Windows!)获得兼容的C++11库?

尝试手动下载“wchar.h”,并将其放置在visual studio项目的本地工作目录中。对我来说效果很好。

如果您将
-nostinc++
传递给clang,您应该能够将它指向包含多个
-I
开关的确切配置。也可以尝试
-nosdsystemnic-nobuiltinic

-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

你配置错误/错配了叮当声。您还需要添加MinGW-w64路径,该路径位于您添加版本的位置附近

使用我提供的预构建版本,并在此处进行解释:

我修改了Clang以使用MinGW-w64头文件和GCC4.6.3 libstdc++头文件和库。目前,它的版本是3.2,但如果你对源应用了类似的补丁(很遗憾,我没有补丁文件),你也应该能够使用它

我提供的只是提取、添加到路径和使用。仅限32位


还请注意,您使用的是一个古老版本的MinGW-w64 GCC,您应该真正更新它。

我在使用Clang时遇到了同样的问题——3.4版(198054)和mingw-get.exe——版本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代码很好

wchar.h
应该来自您的C库。它不一定需要与Clang一起提供。我已经尝试了很长时间在windows上使用Clang,但似乎没有办法……现在您可以使用mingw(4.7.2)或vc++2012 Expression。您可以尝试使用mingw-64-4.7.2构建qt 5,请查看共享您的调用命令行。您是否记得将-ID:\Code\mingw\include传递给clang++?
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