динамической загрузки библиотек(плагинов) в рантайме, так вот, я хочу сделать такую штуку:
Основная программа имеет API для плагинов, где есть бизнес-логика, есть плагин, который с ним интерфейсит, и сам интерфейс, который работает чисто как хедер файл в C/C++.
В рантайме плагин использует этот хедер что бы обращаться к API внутри программы.
Подскажите, как такое можно реализовать?
Надеюсь правильно объяснил 😅
Поискал ещё, нашел что-то похожее Использование extern "C" {/* блок с объявлениями функций*/} в крейте "интерфейса"(типо хедера), а в программе основной использовать тоже extern "C" но уже с имплементацией функции в том же пути, что и лежит объявление функции в хедере Надеюсь я правильно прочитал доку по этому 😅
ну extern “C” это правильное направлиние чтобы обеспечить хотя бы совместимый abi между плагином и аппой
это я знал, везде где использовался ABI я использовал extern "C", я именно про создания "хедера", что бы сделать систему как в C/С++
Можешь взять сишный хэдер, препроцесить его с помощью bindgen, тем самым получить файл с растовыми сигнатурами. И поправить этот файл, добавив свою реализацию
и как тогда сделать имплементацию этого хедера в основе(куда плагины и "вставляются")?
Обсуждают сегодня