2013-05-23 8 views
5

Według http://clang.llvm.org/get_started.html Zrobiłem ALL_BUILD na Windows z Visual Studio 2010 i dodano wbudowany rzeczy na mojej ścieżce systemowej z $ PATH = ... ClangSourcBuildPath ... \ budować \ bin \ Releasedzyń i <iostream> na oknach

teraz można skompilować następujący plik na konsoli z:

$> dzyń file_c.c

//file_c.c 
#include <stdio.h> 

int main() 
{ 
    printf("hello world\n"); 
    return 0; 
} 

Ale jeśli to zrobię to samo dla następnego pliku ($> dzyń file_cpp.cpp):

//file_cpp.cpp 
#include <iostream> 

int main() 
{ 
    std::cout << "Hello World!"; 
    return 0; 
} 

otrzymuję następujące błędy:

W pliku zawarte z file_cpp.cpp: 1:

In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iostream:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\istream:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\ostream:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\ios:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\streambuf:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\xlocnum:13: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\xiosbase:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\xlocale:11: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\stdexcept:10: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\xstring:9: 
In file included from C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\xmemory:15: 

C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility:81:10: 
error: missing 'typename' prior to dependent type name '_It::iterator_category' typedef _It::iterator_category iterator_category; 

C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility:82:10: 
error: missing 'typename' prior to dependent type name '_It::value_type' typedef _It::value_type value_type; 

C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility:83:10: 
error: missing 'typename' prior to dependent type name '_It::distance_type' typedef _It::distance_type distance_type; 

C:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility:224:32: 
error: template parameter redefines default argument 
template < class _E, class _Tr = char_traits<_E> > 

... 

Próbowałem również:

$> dzyń ++ file_cpp.cpp
$> clang -x C++ file_cpp.cpp

Ale wciąż mam te same błędy.

Czy ktoś może mi wyjaśnić, co jest nie tak?

Odpowiedz

3

Istnieją pewne flagi (uważam, że to była -fms-extensions, nie jestem do końca pewna dokładnej opcji), które są wymagane, aby uzyskać wywołanie funkcji parsowania nagłówków VC++.

Następnym problemem, który napotkasz, jest to, że wynikowy plik wykonywalny nie może być połączony. Wynika to z faktu, że clang używa innej nazwy niż mangling MSVC i spowoduje nieokreślone odniesienia.

Jeśli chcesz korzystać z brzękiem na Windows (co jest obecnie możliwe z MinGW-W64), można wykorzystać moje zbudowania takiej paczki, musisz

  1. Clang 3.2

  2. GCC 4.6

Wyodrębniony do tego samego katalogu. GCC jest w tym przypadku używany tylko do wywoływania linkera. Clang może być użyty do kompilacji wszystkiego.

Obecnie nie ma możliwości użycia języka clang dla C++ z nagłówkami Visual Studio +. C powinno działać, ale nie testowałem i mogą istnieć inne problemy ABI uniemożliwiające działanie.

Powiązane problemy