bibliothek einbinden
-
grüße an alle
meine situation:
ich habe einen ordner, der viele dateien enthält, unteranderem klassen, wie punkt, vektor und matrix mit vielen vielen dazugehörigen funktionen die ich woanders inform einer bibliothek einbinden möchte.so, wurde die bibo in dem ordner erstellt:
#ifndef LIBMATH3D_HPP #define LIBMATH3D_HPP #if WIN32 #if LIBMATH3D_EXPORT #define LIBMATH3D __declspec(dllexport) #else #define LIBMATH3D __declspec(dllimport) #endif #else #define LIBMATH3D #endif #endifnun möchte ich in einem projekt eben diese bibliothek einbinden, damit ich dann die klassen mit samt ihren funktionen nutzen kann
jedoch habe ich absolut keine ahnung, wie ich das anstellen soll.
könnt ihr mir helfen und wenn es euch nichts ausmacht, es mir auch erklären?
vielen dank
grüße kylanysik
-
Du drückst dich zu ungenau aus, als das man dir konkret helfen könnte ("so, wurde die bibo in dem ordner erstellt" ?? bibo = Bibliothek? Und ein Header erzeugt bestimmt keine Bibliothek in einem Ordner;) )
Der allgemeine Vorgang ist: Mit deinem Compiler eine .dll erstellen und dann beim Übersetzen der Dateien, die Zeugs aus der dll benutzen, die Importlib der .dll dazulinken.
-
Einfach die passenden Header per #include einbinden, aufpassen, dass der Compiler die Header findet und dann losrocken. Musst nur die DLL irgendwie für dein Programm zugänglich machen. Z.B. in das Programmverzeichnis kopieren.
-
Wirdbald schrieb:
Einfach die passenden Header per #include einbinden, aufpassen, dass der Compiler die Header findet und dann losrocken.
Header alleine sind ein bißchen zu wenig. Man muss schon auch explizit die lib dazulinken.
-
Jaja, richtig. Dafür hast Du die Header nicht genannt, sondern nur die Lib. Da geben zwei Halbe ein Ganzes.

Und jetzt ist der Threadersteller dran.
-
ersteinmal vielen dank für eure antworten..
ja, es fällt schwer etwas genau zu formulieren, wenn man sich nicht wirklich damit auskennt..
aber übung mach den meister.. so hoff ich
ich bin mir auch nicht ganz im klaren, wie das prozedere funktioniert.
wie erstelle ich denn eine dll?
könnt ihr mir vielleicht, die einzelnen vorgänge, womöglich mit beispielen, demonstrieren?
und ebenfalls wie ich dies dann richtig einbindetut mir leid, wenn ich solche umstände bereite..
grüße kylanysik
-
Die konkreten Schritte zur Erstellung einer DLL sind abhängig von deinem/deiner Compiler/IDE, die du uns leider nicht mitgeteilt hast.
Aber wenn du nach deinem Compiler + irgendwas wie "Create DLL" googelst, solltest du eine Anleitung finden.
Hier ist es z.B. sehr gut für Visual Studio beschrieben: http://msdn.microsoft.com/en-us/library/ms235636(VS.80).aspx
-
asö.. ich verwende den gcc unter ubuntu 8.04 Hardy
-
Ja, da sind wir mal einen kleinen Schritt weiter. Eine dll scheidet aus. Die Frage ist nun aber immer noch: Dynamische oder Statische Bibliothek oder gleich den Quellcode dazulinken. Du schreibst
ich habe einen ordner, der viele dateien enthält, unteranderem klassen, wie punkt, vektor und matrix mit vielen vielen dazugehörigen funktionen
Das klingt für mich, als hättest Du die Bibliotheken nicht selbst geschrieben. In welcher Form hast Du sie denn vorliegen? Oder sind sie doch selbst geschrieben? Dann kopier doch einfach die Quellcode-Dateien in dein neues Projekt.

Ansonsten würde ich dir fürs Bibliotheken-Erstellen und vor allem -Benutzen dringend raten ein Build-System zu verwenden. Alles andere kann vielleicht lehrreich sein, ist aber ziemlich umständlich. Am einfachsten ist es, Du nutzt die entsprechenden Funktionen Deiner IDE. Oder arbeitest Du mit reinen Texteditoren? Dann mach's auch richtig "low-level", stürze Dich selbst auf die man-Seiten und online-Dokus von gcc und schreibe Dir shellskripten. Is aber eher unpraktisch

-
nunja, selbstgeschrieben habe ich es zu 50%
also.. ich hatte schon eine mehr oder weniger fertige ordnerstruktur mit samt dateien vor mir, in denen lediglich die implementation fehlte. und eben die hab ich gemacht ^^nunja.. ich hab hier ja ne aufgabe vor mir in der gefordert wird, dass ich dies als bibliothek einbinden soll..
ich verwende KDevelop: C/C++
-
Gut, Du hast die Bibliothek also (mehr oder weniger) selbst geschrieben. Und hast die Tests dann wahrscheinlich gemacht, indem Du das Ganze als Programm mit einer Main-Funktion kompiliert hast?
1. Bibliothek: Geh einfach hin und lege in KDevelop ein neues Projekt vom Typ "Dynamic Library" an. Dann fügst Du alle nötigen Dateien in das Projekt ein und kompilierst.
2. Programm: In dem Programm, das die Bibliothek benutzen soll musst Du da wo es nötig ist per #include <header.hpp> die entsprechenden Header mit den Deklarationen einfügen. Dann kannst Du alle in dem Header deklarierten Funktionen und Klassen nutzen. Zusätzlich musst Du in den Projekteinstellungen zwei Sachen verändern. Ich habe KDevelop noch nicht viel benutzt, aber im Prinzip geht es so:
- Du musst das Verzeichnis mit den Headern der Bibliothek Deinem Compiler bekannt machen. Irgendwo gibt es eine Option "Include-Directories" oder "Compiler-Such-Verzeichnis" oder so etwas in der Art. Da muss das Verzeichnis rein.
- Das Verzeichnis mit der erzeugten Bibliothek (wahrscheinlich eine *.so-Datei) muss dem Linker bekannt gemacht werden. Bzw. du musst explizit angeben, dass die Bibliothek dazugelinkt werden soll. Da musst Du ein wenig Suchen.
Die KDevelop-Hilfe ist ziemlich gut. Wenn Du nicht weiterkommst, guck bitte erst Da einmal kurz rein. Da steht mit Sicherheit drin, wie's geht.Gruß
Wirdbald