2012-03-28 6 views
0

Hoffentlich ist dies relevant für Stackoverflow als mac.stackexchange ...Mit STL im Mac 10.5 SDK

ich ARToolkit für ein Augmented-Reality-Projekt verwenden, und um es unter Mac funktioniert Ich muß Führen Sie das 10.5 SDK aus.

Mein Problem ist, dass ich keine der STL-Header-Dateien scheinen kann ... vor allem Vektor.

Gibt es irgendeine Art von Wrapper oder Workaround, die ich verwenden kann? Ich bin Kompilieren im Grunde gerade C-Code, und möchten Verwendung von einigen der schöneren Merkmale des STL Rahmen treffen, die Entwicklung zu beschleunigen ...


Edit:

In näherer Betrachtung scheint es, dass ARToolkit std_vector irgendwann in seinem Include-Pfad enthält.

Fehler Schnipsel:

Bits/c++allocator.h: No such file or directory 
Expected template-name before '<' token 
Expected `{' before '<' token 
Expected unqualified-id before '<' token 
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.2.1/iosfwd 
Bits/c++locale.h: No such file or directory 
Bits/c++io.h: No such file or directory 
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.2.1/bits/stl_algobase.h 
Bits/c++config.h: No such file or directory 
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.2.1/bits/stl_vector.h 
Expected type-specifier before 'allocator' 
Expected '>' before 'allocator' 
'input_iterator_tag' has not been declared 
'forward_iterator_tag' has not been declared 
'input_iterator_tag' has not been declared 
'forward_iterator_tag' has not been declared 
'input_iterator_tag' has not been declared 
'forward_iterator_tag' has not been declared 
There are no arguments to '__N' that depend on a template parameter, so a declaration of '__N' must be available 
(if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) 
Expected nested-name-specifier before 'iterator_traits' 
Expected initializer before '<' token 
There are no arguments to '_IterCategory' that depend on a template parameter, so a declaration of '_IterCategory' must be available 
Expected nested-name-specifier before 'iterator_traits' 
Expected initializer before '<' token 
There are no arguments to '_IterCategory' that depend on a template parameter, so a declaration of '_IterCategory' must be available 
Expected nested-name-specifier before 'iterator_traits' 
Expected initializer before '<' token 
There are no arguments to '_IterCategory' that depend on a template parameter, so a declaration of '_IterCategory' must be available 
/Users/espais/research/artoolkit/trunk/artoolkit/examples/newproject/newproject.cpp 
Expected `}' at end of input 
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h 
Expected template-name before '<' token 
Expected `{' before '<' token 
Expected unqualified-id before '<' token 
+0

Warum können Sie die STL-Header-Dateien nicht einschließen? Was passiert, wenn du es tust? –

+1

Die STL ist ein Teil der C++ - Standardbibliothek. Wenn das, was du kompilierst, "im Grunde reiner C-Code" ist, könnte das vielleicht dein Problem sein? ;) – jalf

+0

Wahr ... Ich hatte gehofft, ich könnte irgendwie den Compiler auf C++ umstellen (derzeit sind nur Optionen LLVM GCC 4.2 und Apple LLVM Compiler 3.0). – espais

Antwort

0

Im Grunde gab es einige Tricks, die hinter den Kulissen getan werden mussten. Ich musste mein lokales SDK aktualisieren (es stellt sich heraus, dass ARToolkit neuere Versionen unterstützt, unabhängig davon, was in der THIR-Dokumentation steht), und dann funktionierten die STL-Bibliotheken.

0

Unter Umständen müssen Sie Ihre Datei eine .mm Datei (Objective-C++) statt .m (Objective-C) zu machen.

Ansonsten sollte es keine Probleme geben #include <vector>.

+0

Es ist eigentlich eine .C-Datei. Ich hatte gehofft, dass ich den Compiler zu C++ wechseln könnte, aber alles, was ich sehe, ist gcc in der Liste. – espais

+0

Sie können in die Projekt-Build-Einstellungen gehen und unter GCC 4.2 Sprache wählen Sie "C++" unter "Quellen kompilieren als" anstelle von "Nach Dateityp". – StilesCrisis

+0

Das funktioniert, aber sobald ich den Vektor-Header einfügen bekomme ich> 200 Fehler ... – espais