tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
4771
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    Mal sehen ob mir einer weiterhelfen kann

    Eine Library (eine shared) zu erstellen habe ich ja schon hinbekommen
    jetzt muss ich von meinem C Programm das nachher zur Library wird eine andere shared Library
    benutzen - wie macht man das ?

    ich nutze gcc trotzdem bin ich auch für Tips dankbar die ander Compiler betreffen
    ev hilft mir das ja auch weiter
     

  2. #2
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Also shared Libs verwendest du unter Windows mit LoadLibrary() oder unter UNIX mit dlopen().
    Oder verstehe ich hier jetzt was falsch?

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  3. #3
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    Jo es gibt 3 Library Arten
    statisch; shared und dynamisch und dlopen nutzt man bei dynamischen
    Ich habe mir mal gestern ein Howto runtergeladen nur meine Fall wird dort nicht
    behandelt
    Ich bekomme meine Libaray ja fehlerfrei übersetzt, nur er springt in dem Teil wo ich die andre Library
    nutzte ins Nirwana
    mache ich ein printf rein zur Kontrolle, statt dem Aufruf der anderen Libraryfunction geht es
     

  4. #4
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Also so ganz bin ich daraus noch nicht schlau geworden, erklär mal genauer was du machen willst, evtl.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  5. #5
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    also gegeben ist ein ctapi.so shared Library die einige Schnittstellen zur Verfügung stellt
    und ich möchte eine Library erstellen die ein paar Anpassungen macht

    Programm > meineLib > Herstellerlib

    um mein Problem ist das ich weiss wie ich dem Compiler kann das er die Herstellerlib
    einbinden soll.
    Vermutlich geht das auch nicht - werde wohl alles in ein Verzeichnis packen müssen
    und eine komplette neue Library erstellen müssen
     

  6. #6
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Das Programm ist das auch von dir? Wenn ja, dann sagst du in deinem Programm ja bestimmt, das du mit dlopen() deine lib lädst mit dlsym() holst du dir ja einen Funktionszeiger auf eine Funktion.
    Also wenn ich dich richtig verstehe möchtest du deine Lib einfach dazwischen hängen, zwischen deinem Executable-Programm und der Herstellerlib, oder?

    Also müsstest du die Funktionen ja gleich benennen zb.
    Programm:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    int main(int argc, char** argv)
    {
       #include <dlfcn.h>
       int (myFunc*)(int);  //funktionszeiger
       void* handle
       handle = dlopen("mylib.so", RTLD_LAZY);
       myFunc = dlsym(handle, "myFunction);
       // aufruf
       int ret = myFunc(42);
       dlclose(handle);
       return 0;
    }

    Deine mylib.so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <dlfcn.h>
     
    int MyFunction(int param)
    {
       // vorbehandlung ....
     
       int (myFunc*)(int);  //funktionszeiger
       void * handle;
       dlopen("ctapi.so", RTLD_LAZY);
       myFunc = dlsym(handle, "myFunction);
        
       // aufruf der lib des Herstellers
       int ret = myFunc(param+99);
       dlclose(handle);
       // nachbehandlung
       
       return ret;
       
    }


    So das ganze ist jetzt nix anderes als eine dazwischengeschaltete lib.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

Ähnliche Themen

  1. Solr eine Lucene basierte Enterprise Search Library
    Von Thomas Darimont im Forum Java Technology News
    Antworten: 1
    Letzter Beitrag: 09.05.12, 10:30
  2. Antworten: 5
    Letzter Beitrag: 04.11.10, 21:17
  3. Library in eigne Library einbinden
    Von Memphis01 im Forum Java
    Antworten: 3
    Letzter Beitrag: 18.08.10, 22:56
  4. Cinema 4D - Library erstellen! (Wie) geht das?
    Von homeedition im Forum Cinema 4D
    Antworten: 2
    Letzter Beitrag: 09.10.08, 17:03
  5. Antworten: 3
    Letzter Beitrag: 25.11.07, 20:14