Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

konfusion string, cstring, string.h...

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Event Horizon2
Newbie
Newbie
Beiträge: 42
Registriert: 3. Feb 2006, 17:47

konfusion string, cstring, string.h...

Beitrag von Event Horizon2 »

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
Member
Beiträge: 69
Registriert: 15. Mär 2006, 14:47

Re: konfusion string, cstring, string.h...

Beitrag von Spasswolf »

<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
Antworten