einfache DLL erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • einfache DLL erstellen

    Hallo liebes Forum =)

    Ich bin gerade dabei mich an DLLs zu machen und muss feststellen das das garnicht so einfach ist wie ich gedacht hab ^^
    habe viel im Internet gesucht allerdings bekommt man dort nie genaue deteils.

    Wie müsste ne DLL aussehen für einen einfachen Taschenrechner und wie binde ich Sie später ein?

    Kann mir einer bitttttteeeeee helfen?!

    Wäre echt nett =)

    danke im Vorraus :D
  • Ich hab mal nen alten Code von mir rausgesucht.

    Taschenrechner.cpp

    Quellcode

    1. #include "function.h"
    2. #include <iostream>
    3. #include <conio.h>
    4. using namespace std;
    5. int main()
    6. {
    7. double dZahl1;
    8. double dZahl2;
    9. char Zeichen;
    10. char auswahl;
    11. bool wiederhole;
    12. do
    13. {
    14. system("CLS");
    15. cout << "Bitte geben sie ihre rechenaufgabe ein!" << endl;
    16. cin >> dZahl1 >> Zeichen >> dZahl2;
    17. switch(Zeichen)
    18. {
    19. case '+': cout << endl;
    20. cout << dZahl1 << Zeichen << dZahl2 << "=" << add(dZahl1,dZahl2) << endl;
    21. break;
    22. case '-': cout << endl;
    23. cout << dZahl1 << Zeichen << dZahl2 << "=" << sub(dZahl1,dZahl2) << endl;
    24. break;
    25. case '*': cout << endl;
    26. cout << dZahl1 << Zeichen << dZahl2 << "=" << mal(dZahl1,dZahl2) << endl;
    27. break;
    28. case '/': cout << endl;
    29. cout << dZahl1 << Zeichen << dZahl2 << "=" << durch(dZahl1,dZahl2) << endl;
    30. break;
    31. default: cout << "Falsches zeichen!" << endl;
    32. break;
    33. }
    34. cout << endl;
    35. cout << "neu?(j/n)" << endl;
    36. auswahl = _getch();
    37. if(auswahl == 'j')
    38. {
    39. wiederhole = true;
    40. }
    41. else
    42. {
    43. wiederhole = false;
    44. }
    45. }
    46. while(wiederhole == true);
    47. system("PAUSE");
    48. return 0;
    49. }
    Alles anzeigen


    function.h

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. double add(double zahl1,double zahl2)
    4. {
    5. double erg;
    6. erg = zahl1 + zahl2;
    7. return erg;
    8. }
    9. double sub(double zahl1,double zahl2)
    10. {
    11. double erg;
    12. erg = zahl1 - zahl2;
    13. return erg;
    14. }
    15. double durch(double zahl1, double zahl2)
    16. {
    17. double erg;
    18. erg = zahl1 / zahl2;
    19. return erg;
    20. }
    21. double mal(double zahl1, double zahl2)
    22. {
    23. double erg = 0;
    24. for(int a=1; a<=zahl2;a++)
    25. {
    26. erg +=zahl1;
    27. }
    28. return erg;
    29. }
    Alles anzeigen


    wie müsste jetzt auf das Beispielbezogen, ich die DLL machen und das einbinden?

    Arbeite mit dem Visual Studio 2008 pro

    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Aalon ()

  • Welches ich gut finde ist "Professionell programieren mit aktuellen Standards" von Dirk Louis.
    Das Buch ist bei Markt und Technik erschienen und ist ganz günstig bei Amazon zu haben.
    Dort wird auch größtenteils (fast nur) Ansi C/C++ behandelt, weshalb ich es nur empfehlen kann.
    Für alle Anfänger, die noch nicht alle Grundlagen kennen, kann ich das Buch "Programmieren mit einfachen Beispielen" ebenfalls von Dirk Louis empfehlen,
    welches mir sehr weitergeholfen hat. (DLL-Programmierung wird dort aber nicht behandelt)
    So viel zu guten Büchern...
    Du bist Terrorist, warum? Siehe hier
  • DLL - ist schon eine Zeit lang her - sollte in mehreren Sprachen zu erstellen sein - Schnittstelle möglichst im C-Stil.

    Ich hatte noch eine Kleinigkeit - schau mal ob das bei dir läuft:

    Quellcode

    1. // testDLL.c
    2. #include <stdio.h>
    3. #include <stdlib.h>
    4. extern "C" __declspec(dllimport)double AddNumbers(double a, double b);
    5. int main()
    6. {
    7. double result = AddNumbers(1, 2);
    8. printf("Das Ergebnis ist: %f\n", result);
    9. system("PAUSE");
    10. return EXIT_SUCCESS;
    11. }
    Alles anzeigen

    und

    Quellcode

    1. // dDLL.c
    2. #ifndef _DLL_H_
    3. #define _DLL_H_
    4. #if BUILDING_DLL
    5. # define DLLIMPORT __declspec (dllexport)
    6. #else /* Not BUILDING_DLL */
    7. # define DLLIMPORT __declspec (dllimport)
    8. #endif /* Not BUILDING_DLL */
    9. extern "C" __declspec(dllexport) double AddNumbers(double a, double b);
    10. double AddNumbers (double a, double b)
    11. {
    12. return a + b;
    13. }
    14. #endif
    Alles anzeigen


    Ich hoffe mal das es läuft - hab das nicht getestet.
    Und was du in die DLL auslagern möchtest kannst du durchaus auch anders handhaben ;)

    Zum 4.: de.wikipedia.org/wiki/Dynamic_Link_Library

    MfG bcc-fan

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von bcc-fan () aus folgendem Grund: Sollte mal gründlicher sehen/testen was alles auf meine HDD herum liegt ;) nun zum 4. endlich eine Ahnung woher der Quelltext seinen Ursprung hat - war wohl für andere Compiler umgeschrieben worden ;)

  • Ah.. das von Wikipedia hatte ich schon ausprobiert.
    Hat bei mir leider nicht Funktioniert oder vielleicht mach ich nur etwas falsch?

    Ich muss doch zwei verschiedene Projekte haben oder?

    Projekt 1: DLL.cpp und kompilieren

    Projekt 2:Rechner.cpp von oben die Header includen Einbinden und Kompilieren oder?
  • Hab kein Visual C/C++ auf meinem Rechner.
    Da die programmiertechnischen Feinheiten der DLL-Schnittstelle mehrfach überarbeitet wurden, kommt es öfter vor das die Demos erst nach Anpassungen laufen.

    DLLs sind ja ursprünglich stark von Microsoft mit Windows beeinflusst worden. Später gab es auch Anläufe diese auf anderen Betriebssystemen zu realisieren.

    Deshalb hier ein Link zu einer treibenden DLL-Kraft - dürfte aktueller als die meisten Bücher zu dem Thema sein:
    msdn.microsoft.com/de-de/library/1ez7dh12.aspx
    für die eingehenderen Infos musst du dich weiter durch klicken. Sprache kannst du wählen - ich hoffe mal das das Übersetzungstool gut funktioniert ;)
    Die Beispiele, hoffe ich, haben die auf ihrem Compiler getestet.

    MfG bcc-fan