Как создать архитектуру плагина, например, в Minecraft bukkit/spigot, на самом деле правильно использовать API [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как создать архитектуру плагина, например, в Minecraft bukkit/spigot, на самом деле правильно использовать API [закрыто]

Сообщение Anonymous »

Мой код представляет полную архитектуру, и его можно найти здесь: PluginManager
Я пытаюсь воссоздать систему плагинов Minecraft на Java, но на C++. Я знаю, что я мог бы просто связать полностью открытый PluginManagerExample с плагинами и предоставить им заголовок и файл .lib.
Однако на более позднем этапе производства я хочу иметь четко разделенные проекты. Если пойти по этому пути, мне потребуется скопировать и вставить файлы заголовков и файлы .lib для отладки и выпуска в репозиторий API плагинов каждый раз, когда я выпускаю новую версию. Я не уверен, является ли это предполагаемым или рекомендуемым подходом.
Примечание: я создал свой собственный мод и покончил с ним, но теперь многие люди попросили меня предоставить API. Я хотел бы воссоздать что-то похожее на Spigot, только на C++.
Поэтому у меня есть несколько вопросов:
  • Как лучше всего предоставить плагинам доступ к моему API?
    Я нашел два возможных подхода, но второй мне не нравится, и с первым я сейчас застрял:

    Предоставьте заголовки и .lib.
  • После создания плагина предоставьте ему PluginContext, в котором хранятся адреса всех функций API в стиле C.
[*]Если первый подход является единственно разумным, как следует структурировать репозитории и за что должен отвечать каждый репозиторий?

[*]Является ли существующий код PluginManager хотя бы достойным?
Я знаю, что класс Singleton не нужен — это всего лишь остаток от предыдущих экспериментов. Меня также не устраивают возвращаемые значения статуса, особенно в функциях unload_all и reload_all.



Подробнее здесь: https://stackoverflow.com/questions/798 ... ally-the-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»