DLL in C++ VS2010 - Beginnerfrage



  • Hallo Zusammen,

    ich muss zeitnah eine .DLL in C++ mit VS2010 erstellen. Nun bin ich kein Programmierer und bitte die Schmähungen in Grenzen zu halten.

    Unter folgendem Link ist ich eine detaillierte, exemplarische Vorgehensweise geschildert:

    http://msdn.microsoft.com/de-de/library/ms235636(VS.80).aspx

    Nun ist es bei mir so, dass ich nicht wie in dem Beispiel nur eine zurückzugebende (bzw. zu exportierende) Variable in Abhängigkeit einer Funktion habe, sondern mehrere.
    Hier ein Auszug des Beispiels des oben stehenden Links:

    (DLL-Auszug .h)
    static __declspec(dllexport) double Add(double a, double b);
    static __declspec(dllexport) double Subtract(double a, double b);

    (DLL-Auzug.cpp)
    double MyMathFuncs::Add(double a, double b)
    {return a + b;}
    double MyMathFuncs::Subtract(double a, double b)
    {return a - b;}

    (Auzug der importierenden Datei)
    MathFuncs::MyMathFuncs::Add(a, b)

    Ich möchte nun beispielweise unter der Funktion "add" mehrere Variablen zurückgeben, da diese von dem selben (in meinem Fall umfangreicheren) Algorithmus abhängen..

    Alle meine laienhaften Versuche waren zum scheitern verurteilt.

    Danke im Voraus für Eure Bemühungen!



  • Hallo,

    dann erstelle dafür eine Struktur, welche die benötigten Rückgabewerte enthält:

    struct Result
    {
      double x;
      int y;
      bool z;
    };
    

    und ändere den Rückgabetyp der Funktion entsprechend:

    Result Add(double a, double b);
    

    Und die Implementierung erzeugt dann diese Struktur

    Result MyMathFuncs::Add(double a, double b)
    {
       Result result;
    
       result.x = ...;
       result.y = ...;
       result.z = ...;
    
       return result;
    }
    


  • Wie genau meinst du das mit "mehrere Variablen zurückgeben"? Eine Funktion kann nur einen Rückgabewert haben, wenn du mehr Daten herausholen willst, mußt du Referenz-Parameter nutzen.



  • Hey TH69,

    vielen herzlichen Dank! Klasse, hat alles beim ersten Umsetzen geklappt.

    Danke für die ausführliche und besispielhafte Beschreibung!

    Wenn Du mal in München bist, geb ich einen aus 🙂


Anmelden zum Antworten