• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

konfusion string, cstring, string.h...

Hallo zusammen!

Ich versuche grade, ein ziemlich großes C++ Softwarepaket zu kompilieren, und habe dabei ein wiederkehrendes Problem.

Im code steht an verschiedenen Stellen ein #include <string>, was der Compiler auch frißt.
Anschließend sind jedoch die Stringfunktionen wie strcpy "not declared in this scope", und der Compiler bricht ab.

Ich bin nun hingegangen und habe das include in #include <string.h> oder auch #include <cstring> geändert, woraufhin der Code durchkompiliert.

Nun weiß ich, daß die .h-Version eigentlich für C-Programme ist, während die c-Version eher für c++ gedacht ist. Aber was ist dann das einfache <string> ? Bzw, wie bekomme ich den Code dennoch ans Kompilieren, ohne den Code selber anfassen zu müssen? Denn wenn das nächste Update kommt, geht es wieder los.

Die Experten dieser Software haben übrigens kein Problem damit, das auf ihren Rechnern zu compilieren, haben aber auch keine genaue Ahnung, warum das bei mir nicht funktioniert.

Hat von euch wer ne Idee?

Nebenbei wird das ganze mit CMAKE gemacht, ich bin aber noch nicht ganz durchgestiegen, wo ich z.B. die direkte Kommandozeile an mein g++ finde. Dieser ist übrigens Version 4.3.
 

Spasswolf

Member
<cstring> und <string.h> sind für die C Stringfunktionen (strcpy, ...), nur das bei <cstring> die Funktionen im namspace std liegen.
<string> ist für die c++ String Klasse: http://www.cplusplus.com/reference/string/string/
Dein Problem liegt vermutlich daran, dass du einen neueren gcc/g++ verwendest als die Entwickler der Software, nimm also entweder einen älteren Compiler oder warte bis die Entwickler einen neueren benutzen. Wenn du den Code selbst ändern willst, solltest du übrigens in den vom Compiler beanstandeten Dateien "#include <cstring>" hinzufügen, und nicht schon ein vorhandenes "#include <string>" ändern.
Hier gibt's noch mehr Tipps, wie man vorhanden Code an den gcc-4.3 anpasst:
http://gcc.gnu.org/gcc-4.3/porting_to.html
 
Oben