2016-10-05 1 views
1

Ich erstelle eine DLL, die Funktionsargumente exportiert, die in der Anwendung verwendet werden, die die DLL lädt.DLL - Wie Funktionsargumente exportieren?

An diesem Punkt sieht meine Fortschritte wie folgt aus:

class PlayerAPI { 
public: 
    PlayerAPI() {} 
    void SetPlayerPosition(float x, float y, float z); 
}; 

class WorldAPI { 
public: 
    WorldAPI() {} 
    void Print(std::string message); 
}; 

class API { 
    API() {} 
public: 
    static API & Get() 
    { 
     static API instance; 
     return instance; 
    } 
    PlayerAPI player; 
    WorldAPI world; 
}; 

__declspec(dllexport) void OnModuleLoad(API * api) { 
    api->world.Print("Test module loaded"); 
} 

Wie ich Funktion exportieren können Anrufe in App verwendet werden, die die DLL lädt? Grundlegend muss die App als eine Antwort von OnModuleLoad bekommen, die die APP verwenden und den Befehl für sich selbst tun wird.

Antwort

0

Normalerweise mache ich ein Makro zum Exportieren von Funktionen beim Kompilieren der DLL und Importieren aller Funktionen auf der Clientseite. In der Kopfzeile sieht es so aus:

Jetzt setzen Sie dies in Ihre Kopfzeile und die Dinge sollten funktionieren. Stellen Sie sicher, DLL_EXPORT in den Präprozessoreinstellungen in dem DLL-Projekt zu definieren.

Mit diesem Makro können Sie ganze Klassen oder sogar nur ausgewählte Teile einer Klasse exportieren.

Auf der Clientseite müssen Sie mit der ODB-Datei aus der DLL verknüpfen, und Sie sollten in Ordnung sein. DLLs sind ein weites Thema, wenn Sie mehr spezifische Informationen zu einem bestimmten Thema haben möchten, machen Sie es uns bitte klar.

+0

Die Sache ist es muss übergeben die Funktionen als Argumente in der App verwendet werden, die die DLL verwenden wird. In einer DLL wird es eine virtuelle API geben, in der Anwendung wird die volle API sein. –

Verwandte Themen