2017-03-06 28 views
8

muszę napisać program, korzystając z (eksperymentalne) C++17 systemu plików biblioteki, ale clang na moim Mac (MacOS 10.12.03) wydaje się nie mieć nagłówek plików włączone .MacOS dzyń C++ nagłówek 17 plików nie znaleziono

Ponieważ jestem wymagany do korzystania z C++17, nie mogę używać alternatyw, takich jak biblioteka Boost.

Kiedy próbuję skompilować przykładowy program, który właśnie zawiera system plików i iostream (i pisze do cout)

#include <filesystem> 
#include <iostream> 
using namespace std; 

int main(){ 
    cout << "test" << endl; 
} 

pojawia się następujący komunikat o błędzie:

>clang test.cpp -std=c++1z 

test.cpp:2:10: fatal error: 'filesystem' file not found 
#include <filesystem> 
     ^
1 error generated. 

Gdy próbuję samo używając GCC 6.3 (instalowanego przez homebrew) otrzymuję:

>gcc-6 test.cpp -std=c++17 
test.cpp:2:22: fatal error: filesystem: No such file or directory 
#include <filesystem> 
        ^
compilation terminated. 

Próbowałem również za pomocą experimental/plików zamiast który kompiluje używając gcc ale wydaje się, aby spróbować skompilować dla iOS prowadzących do innego błędu, który wydaje się być związane z iostream

Undefined symbols for architecture x86_64: 
    "std::ios_base::Init::Init()", referenced from: 
     __static_initialization_and_destruction_0(int, int) in ccd5QiVt.o 
    "std::ios_base::Init::~Init()", referenced from: 
     __static_initialization_and_destruction_0(int, int) in ccd5QiVt.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

wersji mojego brzękiem jest:

>clang --version 
Apple LLVM version 8.0.0 (clang-800.0.42.1) 
Target: x86_64-apple-darwin16.4.0 
Thread model: posix 
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 

Jestem wdzięczny za wszelkie pomocne informacje, ponieważ nie znalazłem nic, co rozwiązało mój problem (chociaż prawdopodobnie szukałem złych warunków).

Jeśli potrzebujesz więcej informacji, chętnie go dostarczę, ale mam nadzieję, że zawierałem wszystko.

+0

Jeśli zadanie ma wymóg ten, może instruktor powinien ci powiedzieć jak faktycznie osiągnąć ten kompilatora (kompilator i flagi)? – crashmstr

+0

Cóż, on używa tylko Linuksa, więc nie wiedział, jak to zrobić na komputerze ... – snoato

+0

@DeiDei LibC++ (Clang) nie wysyła '' w wersji 4.0. – EricWF

Odpowiedz

9

LibC++, który jest standardową biblioteką C++ na OS X, nie przeniósł jeszcze <experimental/filesystem> do <filesystem>, ponieważ specyfikacja nie jest stabilna.

Mam nadzieję, że <filesystem> będzie częścią wydania Klang 6.0. (EDIT: Brakowało nam 5,0)

+1

Rozumiem, dziękuję :) Ale czy nie powinienem umieć zawrzeć ? – snoato

+1

Szybkość, z jaką Apple przesyła zmiany w górę strumienia libC++, nie należy do mnie.LibC++ najpierw wysłał '' w wersji 3.9, ale Apple nie wydało jeszcze tego jako części XCode. Jeśli chcesz zbudować własną wersję libC++ z pnia, to będzie to . – EricWF

+0

W porządku, dziękuję! – snoato

0

Łącznie dostaje deklaracje, ale uzyskać definicje masz również połączyć z -lstdC++ fs (na libstdC++) lub nie wiem (na libC++). Jeśli ktoś wie, może może może zaktualizować tę odpowiedź?

Dla libC++ trzeba połączyć ze -lc++experimental