In DLL Function aus dem Hauptprogramm aufrufen



  • Hallo, ich habe eine statisch gelinkte DLL. Jetzt rufe ich in der DLL eine Funktion mit einem Zeiger auf ein Object(Klasse) in meiner Hauptanwendung auf.
    Geht so weit alles.

    Jetzt würde ich aber gerne eine Funktion aus dem Object (aus der Klasse / Hauptprogramm) aufrufen. Header usw. sind in dem DLL Projekt eingebunden.

    Beim linken kommt jetzt der Fehler: Nicht aufgelöstes Symbol "CreateArray..."

    Hintergrund: In der DLL werden Berechnungen durchgeführt. Die DLL soll dafür beim Hauptprogramm einen dyn. Array anlegen (CreateArray).
    Wenn ich den Speicher in der DLL anlegen, kann ich ihn ja später nicht vom Hauptprogramm löschen....



  • gib eine pure virtual ausgabe deiner kasse an die dll.

    ///////////////////////////////////////////////////////
    // in dll und exe bekannt
    ///////////////////////////////////////////////////////
    class IMyClass
    {
    public:
       virtual void CreateArray() = 0;
    };
    
    ///////////////////////////////////////////////////////
    // in exe
    ///////////////////////////////////////////////////////
    class CMyClass : public IMyClass
    {
    public:
        virtual void CreateArray() 
        {
          // ...
        }
    }
    
    ///////////////////////////////////////////////////////
    // in dll
    ///////////////////////////////////////////////////////
    
    void DllFunction(IMyClass *pMyClass)
    {
       pMyClass->CreateArray();
    }
    


  • @CMatt

    Vielen Dank für die "rettende" Antwort. Funktioniert prima! 🙂

    Kannst Du mir vielleicht kurz sagen, was dieses "virtual" bedeutet?

    Danke



  • AnTri schrieb:

    Kannst Du mir vielleicht kurz sagen, was dieses "virtual" bedeutet?

    http://tutorial.schornboeck.net/virtual.htm


Anmelden zum Antworten