2013-02-15 56 views
4

我跟着指示在http://clang.llvm.org/get_started.html編譯鏘在Windows

我LLVM編譯和鐺與2010年MSVC的最新主幹現在我可以編譯鐺簡單的程序,但是當我試圖編譯這個節目,我得到了很多的錯誤。 下面是程序:

#include <algorithm> 
int main(){ return 0; } 

這裏有一些錯誤的:

In file included from hello.cpp:1: 
In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\algorithm:6: 
In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\memory:987: 
In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\intrin.h:24: 
In file included from H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\immintrin.h:32: 
In file included from H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\xmmintrin.h:988: 
H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1384:22: error: expected expression 
    return (__m128)__in; 
        ^
H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1390:23: error: expected expression 
    return (__m128i)__in; 
        ^
H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1396:23: error: expected expression 
    return (__m128d)__in; 
        ^

完整輸出鏘:http://pastebin.com/qi87K8qr

鏘嘗試使用MSVC頭,但它不工作。也許我應該使用libC++或libstdC++來代替,但怎麼做呢?

注意我沒有興趣在預編譯鐺二進制

回答

4

是,鐺根本不支持微軟的所有擴展C++語法,因此無法解析微軟的C++其使用語法頭。不僅如此,Clang也沒有完全支持微軟的C++ ABI,名字混搭等等。但是,我相信Windows上的Clang在C上工作正常。

要使用不同的C++標準庫,可以使用clang忽略正常的頭文件和庫目錄,IIRC,-nostdinc++-nostdlib++。然後你可以告訴你要使用的包含和庫目錄(使用-isystem-I或其他)。但是我不確定在這些情況下libC++或libstdC++是否可以工作,因爲它們可能取決於Windows C運行時庫沒有的東西。

0

錯誤發生在clang本身提供的頭文件中。看起來它不能正確處理MMX/SSE類型。嘗試將-msse -msse2開關添加到命令行。

0

我正在使用libstdC++並使用VS2012Express爲桌面構建了clang。 cmake字符串是「Visual Studio 11 Win64」和必需的dirs。是使用-I參數指定的。

0

我猜你的程序可以工作,如果我使用Windows的mingw頭。