WIndows上的Clang查找VC头而不是GCC头

WIndows上的Clang查找VC头而不是GCC头,windows,c++11,clang++,mingw-w64,Windows,C++11,Clang++,Mingw W64,当我安装了Clang3.7时,只要路径中只有这两个目录,它就会从我的GCC安装中找到STL头 现在我已经安装了Clang3.8,编译器会继续查找VisualStudio头,尽管它甚至不在路径中 我的路径如下: PATH=whatever;G:\Compilers\LLVM\bin;g:\compilers\Mingw64-64bit\bin 编辑1 我知道正确的包含路径是什么,但我尝试了使用Codelite进行编译,结果发现: "-IG:\\Compilers\\Mingw64-64bit\\

当我安装了Clang3.7时,只要路径中只有这两个目录,它就会从我的GCC安装中找到STL头

现在我已经安装了Clang3.8,编译器会继续查找VisualStudio头,尽管它甚至不在路径中

我的路径如下:

PATH=whatever;G:\Compilers\LLVM\bin;g:\compilers\Mingw64-64bit\bin
编辑1

我知道正确的包含路径是什么,但我尝试了使用Codelite进行编译,结果发现:

"-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" 
我还使用方言标志
--std=c++11

但是,使用C++库的一个非常简单的程序给了我一些错误,比如

 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>;
                            ^
我现正与以下人士共同编写:

clang++ -v --target=x86_64-w64-mingw32 hello.cpp -o test.exe -std=c++14
我已经查看了使用Dependency Walker生成的可执行文件,它显示为64位编译并链接到
“g:\Compilers\Mingw64-32位\bin\libstdc++-6.dll”

我认为下一步将是尝试编译32位版本,但我似乎找不到正确的目标名称

我刚刚尝试了
clang++hello.cpp-o main.exe-std=c++14--target=i686-pc-mingw32-v

这看起来是在生成一个32位的可执行文件,但它还是冻结了

注意:我更新了路径以指向32位的叮当声

编辑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"
我不知道要传递的正确目录是什么

我有一种感觉,当我遇到这个错误时,我需要传递另一个lib文件


libcmt.lib(thread\u safe\u statics.obj):错误LNK2019:未解析的外部符号\u imp\u CloseHandle

是否更改了目标?VC是新的默认值。将此(示例)用于x64,mingw:

clang++--target=x86_64-w64-mingw32 test.cpp


也不要忘记链接器。

您是否更改了目标?VC是新的默认值。将此(示例)用于x64,mingw:

clang++--target=x86_64-w64-mingw32 test.cpp


也不要忘记链接器。

尝试查看
包含
环境变量而不是
路径
?我想我必须这样做,但奇怪的是,之前它是在执行某种自动发现过程尝试查看
包含
环境变量而不是
路径
?我想我必须这样做,但奇怪的是,早些时候它遵循某种自动发现过程,这些目标值从何而来?我似乎找不到任何关于它们的参考,这些目标值是从哪里来的?我似乎找不到他们的任何参考资料
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"