DLL schreiben unter C



  • Ersten ist Wird darin auch C geschrieben?
    2.Wie binde ich das ein?

    Ps:Im ansi C forum sagte man mir ich solle hier nachfragen.
    Wäre dankbar für viele antworten 🙂
    Und es ist absulutes neuland für mich.Hab vorher nur ansi C geschrieben.
    mfg.
    Stefan





  • Was ist ein Linker?



  • *lol*



  • Schau mal hier: Link



  • Ich hab mal das Beispiel Compiliert.
    Klappt aber Ich verstehs nicht ganz.Gut die DLL schafft ein eigenes Fenster worin die Nachricht ausgegeben wird.
    Nun meine Frage (oder wunsch):
    Ich habe ein Fragen Programm.Ich will das die Fragen in der DLL sind.Um nicht immer das ganze Programm zu Compilieren.Damit ich sozusagen Fragenbogen Austauschen/updaten kann.Und für andere Programme nutzen kann.
    Ist das möglich? 😕 😕
    Und denn linker ich glaub ich habs geschnallt das ist im beispieldas hier:

    DllFunction1("Hello World 1!");
    

    Oder doch das?:

    void DllFunction1(LPSTR message);
    

    Ok ich weiß es nicht.
    wäre für hilfe dankbar.
    mfg.
    Stefan.



  • der linker ist ein programm und keine zeile.



  • Ups mit danke für denn link war zu langsam.



  • achso



  • Ah jetzt hab ich was damit gemeint.Der linker ist das haupprogramm.Die DLLs die Teile die das Programm ausführen soll.Richtig?



  • Noch was bei mir ist aber gar keine DLL im verzeichniss hab ich was falsch geamcht.
    Aber es funktioniert.
    Komisch?
    Was hab ich Falsch gemacht?



  • Also..... wenn du ein Programm schreibst hast du einen Quellqode.
    Diesen Compilierst du mit einem Compiler, der dir dann den Quellcode in Assambler
    übersetzt und dir dann die Objects ausspuckt (einfach ausgedrückt).
    Dann musst du einen Linker nehmen (Programm). Dieser fügt nun die Objects
    zu einem lauffähigen Programm zusammen (.exe datei bzw. bei DLL .dll datei).

    MFG -[NULL]-



  • OK DLL kann ich jetzt erstellen.
    So jetzt meine Frage wie binde ich das in ein Programm ein.Mit Linker?Woher bekomme ich das?



  • Da du offentsichtlich keine Ahnung hast, wie Windows intern funktioniert solltest
    du es mal mit einem Einsteiger-Tutorial für Windows(-Programmierung) und/oder
    einem Buch versuchen.
    Windows-Programmierung | ISBN: 3860631888



  • Genau das ist es ich suche mal windows Tutorials.Danke.



  • - Compiler ein Programm um aus HRM (Human readable material) MRM (machine readabel material) zu machenm, d.h du überstezt dein C-programm in eine objektfile (windows *.obj, Unix *.o).
    - Linker eine Programm was mehrere obj-Files und libraries zu einem ausführbarem Programm zusammensetzt ( windows *.exe Unix keine extension vorgeschrieven dafür aber x-recht nötig).
    - library mit einem Programm zusammengeführte obj files für den einfacheren Zugriff des linkers.
    es gibt 2 Typen
    - statische libraries, die benötigten funktionen werden durch den Linker entnommen und in des ausführbare Programm eingefügt.
    - dynamische Libraries, 2 Verfahren
    -implizites laden. Beim Kompilieren ist die Inforamtion über die Library vorhanden und es werden aufrufe dafür in des Programm eingesetzt, beim Start des Programms wird die Library dazugeholt
    - explizites laden, keine Information über die dll beim linken, Das Programm öffnet nach dem start die dll selber und holt sich die pointer für die Funktionen

    IDE Programm für dummies, damit sie das alles nicht erfahren bzw den debugger nicht nutzen,
    IDE Programm für Fortgeschrittene,
    - da die meisten IDE´s einen guten Debugger mitliefern, mit denen man den Fehlern in den Programmen excellent auf die Spur kommen kann, da man die Programme quasi wie unter Basic zeile für zeile ausführt und sehen kann was in den Variablen steht und passiert.
    - Programm mit dem man das Ziel als was der code compiliert werden soll angeben kann, exe, lib, dll, Konsolprogramm Windowsprogramm.
    - Programm was einem durch die Hilfefunktion unheimlich viel über die funktionen die man nicht genau kennt erzählt.



  • @Stefan311
    Das was du tun möchtest ist tatsächlich sinnvoil in einer DLL möglich
    Lege deine daten in einem Feld in der dll an und schreibe eine Funktion die dir
    eine Zeile zurückliefert. diese Funktion rufst du dann aus deinem Programm aus auf.
    Du kannst damit unterschiedliche Fragen für unterschiedliche Leute oder untershiedliche Sprachen in jeweils einer
    dll speichern. Und nur durch das austauschen der Dlls stellt dein programm andere Fragen

    Das könnte so aussehen

    //Achtung ungetestet.
    typedef struct 
     {
        char *daten;
     } FragenSTRUCT;
    static FragenSTRUCT Fragen[]=
     {
        {"dies ist die erste Frage"},
       {"Zweite Frage"},
     };
    static anzahl=(sizeof(Fragen)/sizeof(FragenSTRUCT));
    
    int frage(int index,char *text)
    {
     int err=0;
     if (0 <= index) && (index < anzahl)
       strcpy(text,Fragen[index]);
     else
      err=1;
    return err;
    }
    


  • genau das ist es.Weil jedes mal nen neues Programm zu schreiben finde ich lästig.Hingegen nur einzelne Teile ist da schon einfacher. 🙂
    Jetzt such ich erstmal nen linker und überlege wie sowas funktioniert.(zusammenbau und Programmierung).
    Achso ich wollte es erstmal in einer Konsole machen da ich von windows nicht sehr viel weiß.(Fenster usw.)

    mfg.
    Stefan



  • Kann es sein das bei Dev++ ein linker schon eingebaut ist.



  • Ja, jede IDE hat heutzutage einen Linker 🙂

    MfG SideWinder



  • Und ich suche einen im Internet. 🙄

    Da sieht man wie wenig ahnung ich in diesem Thema habe.


Anmelden zum Antworten