PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Boost + XCode macht Probleme


Senior Sanchez
2010-09-09, 20:35:21
Hi,

Da ich etwas herum programmieren will, habe ich mir auf meinem Mac (Mac OS X 10.6, aktuellstes XCode, GCC 4.2.1) per Darwinports sowohl openCV 2.1.0 als auch boost 1.44.0 installiert. Diese sind in den Ordner /opt/local und dann in die Unterordner include bzw. lib korrekt installiert worden.

Erstelle ich nun per XCode ein Projekt für eine ganz normale C++ Command Line Application, so baut er mir standardmäßig ein Hello World Beispiel da rein, dass per cout Hello World hinschreibt. So weit, so gut.

Damit ich openCV im Projekt nutzen kann, musste ich nun den Header Search Path erweitern, sodass ich dort /opt/local/include hinzugefügt habe.

Das Problem ist aber jetzt, dass es beim Kompilieren nun immer Fehler gibt. Stein des Anstoßes ist, dass der Compiler in einer Zeile der c++locale.h die Funktion vsnprintf aufrufen möchte, die es aber laut Compiler in der std gar nicht gibt!

Nachdem ich mir den Compileroutput angeschaut habe, hat sich herausgestellt, dass Boost da irgendwie dazwischen funkt. Somit habe ich testweise den Ordner Boost mal aus /opt/local/include verschoben und siehe da, nun kompilierts und läuft. Aber ich würde nun sehr gerne Boost benutzen, sodass ich diese Lösung knicken kann.

Hat irgendjemand eine Ahnung was da genau schief läuft und wie ich das Problem lösen kann?

Ectoplasma
2010-09-10, 08:40:00
Hi,

...

Hat irgendjemand eine Ahnung was da genau schief läuft und wie ich das Problem lösen kann?

Das sind viel zu wenig Informationen. Ich tippe mal auf ein Problem mit Name Spaces. Dinge wie oben beschrieben passieren, wenn man z.B. einen Header innerhalb eines Name Space Scopes inkludiert. Ich kann auch völlig daneben liegen. Es gibt halt zu viele Möglichkeiten, woran es liegen kann.

Senior Sanchez
2010-09-12, 23:07:50
Problem gelöst.
Man darf den Header Search Path nicht als rekursiv markieren, da er dann auch direkt iostream aus dem boost-Pfad lädt und damit wohl die Standard-iostream "überschreibt".