Statische Bibliothek erstellen
-
Tut mir leid, aber ich weiß nicht wo ich das sonst hintun soll.
Wenn ein Moderator das besser weiß, dann bitte ich diesen diesen Thread zu verschieben.
Nun mein Problem:
ich will eine einfache statische Bibliothek erstellen, die ganz ohne Klassen auskommen soll, da sie eine Art Funktionssammlung darstellen soll.
Die Bibliothek soll StringMath heißen und soll Funktionen bereitstellen, mit denen man mit Strings rechnen kann.
Nun weiß ich nicht, wie das geht.
Ich habe schon ein paar Funktionen geschrieben. Hier der Code:
#include <string> #include <iostream> using namespace std; unsigned int stdlen = 5; string SMath_len ( string str, unsigned int laenge = stdlen ) { int nachkomma_s = str.length() - str.find("."); unsigned int nachkomma_u; if( nachkomma_s == -1 ) { return str + "." + string("0", laenge); } else { nachkomma_u = (unsigned) nachkomma_s; if( laenge == nachkomma_u ) { return str; } else if( laenge < nachkomma_u ) { return str.substr(0, str.length() - (nachkomma_u - laenge)); } else { return str + string("0", laenge - nachkomma_u); } } }
Kann mir da jemand helfen?
P.S.: Schön wäre auch zu wissen, wie ich dann darauf zugreifen kann.
-
Das kommt ganz auf die IDE bzw. das Build-System an, das du verwendest.
-
Grobes Vorgehen:
1. Jetzt schreibst du noch einen schönen Header dazu.
2. Dann compilierst und assemblierst du dein Programm, ohne es zu anschließend linken.
3. Jetzt bist du quasi schon fertig und kannst woanders den Header aus 1. benutzen und gegen die in 2. erzeugte Datei linken.
4. Schicker ist es natürlich, wenn du die in 2. erzeugte Datei in das Bibliotheksformat deiner Plattform überführst.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also ich verwende Microsoft Visual C++ - Express Edition auf Windows und ich in dem Gebiet ein absoluter noob.
Exemplarisch verstehe ich das besser.
-
-
Auf der Seite war ich schon. Das genau das was ich nicht haben will, nämlich eine Klasse.
-
Lies sie dir trotzdem, das Vorgehen ist genau das selbe.
-
Heißt das, wenn ich die Funktionen in der Header Datei erwähne, kann ich sie wo anders verwenden?
Und kann ich dann auch so nur bestimmte Funktionen zulassen?
-
so funktioniert das nicht!
Hier der Code:
Im Projekt StirngMath hab ich folgende Dateien:
StringMath.h:
#include <string> #include <iostream> using namespace std; string SMath_add( string str1, string str2, unsigned int laenge/* = stdlen*/ ); //Die anderen Funktionen
dann noch main.cpp. Da stehen die Funktionen drin.
Dannhab ich in der gleichen Projektmappe ein anderes Projekt, das auf die Funktion Math_add zugreifen soll.
Er sagt, dass er die Datei nicht einbinden kann.
-
Die erinnerung schrieb:
Er sagt, dass er die Datei nicht einbinden kann.
Wie genau sieht denn Dein include aus? Und wie die Fehlermeldung? Ein simples
#include "StringMath.h"
funktioniert nicht?
-
Habs mir nochmal durchgelesn funktioniert jetzt halbwegs
-
Wie schaffe ich es optionale Parameter zu erzeugen?
Ich weiß, dass man einen standard-Wert vorgegen kann und das ganze somit optional wird, aber in der Headerdatei, in der die Funktionen (zwangsweiße) noch mal aufgelistet werden, kann ich den Wert nicht vorgegeben, da dieser in einer Variable gespeichert ist.
Bitte um Hilfe.
-
Erklär mal genauer, was Du machen willst. Und mach ggf. einen neuen Thread im C++-Forum auf, das hat jetzt nämlich IMO nichts mehr mit statischen Libraries per se zu tun.
-
Hat sich mittlerweile sowieso schon geklärt!
Danke für eure Hilfe!
Der Thread kann geschlossen werden.