Wie man einer Plugin-Architektur wie in Minecraft Bukkit/Spigot tatsächlich die API richtig gibt [geschlossen]C++

Programme in C++. Entwicklerforum
Anonymous
 Wie man einer Plugin-Architektur wie in Minecraft Bukkit/Spigot tatsächlich die API richtig gibt [geschlossen]

Post by Anonymous »

Mein Code stellt die vollständige Architektur dar und ist hier zu finden: PluginManager
Ich versuche, das Plugin-System von Minecraft in Java, aber in C++, neu zu erstellen. Ich weiß, dass ich einfach das vollständig verfügbare PluginManagerExample mit den Plugins verknüpfen und sie mit einem Header und einer .lib-Datei versehen könnte.
Später in der Produktion möchte ich jedoch sauber getrennte Projekte haben. Wenn ich diesen Weg gehen würde, müsste ich jedes Mal, wenn ich eine neue Version veröffentliche, die Header-Dateien und die .lib-Dateien für Debug und Release in das Plugin-API-Repository kopieren und einfügen. Ich bin mir nicht sicher, ob dies der beabsichtigte oder empfohlene Ansatz ist.
Randbemerkung: Ich habe meinen eigenen Mod erstellt und war damit fertig, aber jetzt haben mich viele Leute gebeten, eine API bereitzustellen. Ich möchte etwas Ähnliches wie Spigot neu erstellen, nur in C++.
Ich habe also ein paar Fragen:
  • Wie kann ich Plugins am besten Zugriff auf meine API gewähren?
    Ich habe zwei mögliche Ansätze gefunden, aber der zweite gefällt mir nicht, und beim ersten stecke ich derzeit fest:

    Stellen Sie Header und a bereit .lib-Datei.
  • Nachdem Sie das Plugin erstellt haben, stellen Sie ihm einen PluginContext bereit, der Adressen für alle API-Funktionen im C-Stil speichert.
[*]Wenn der erste Ansatz der einzig vernünftige ist, wie sollten die Repositorys strukturiert sein und wofür sollte jedes Repository verantwortlich sein?

[*]Ist Ist der vorhandene PluginManager-Code zumindest anständig?
Mir ist bewusst, dass die Singleton-Klasse unnötig ist – sie ist nur ein Überbleibsel aus früheren Experimenten. Ich bin auch mit den Status-Rückgabewerten nicht zufrieden, insbesondere in den Funktionen unload_all und reload_all.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post