Похожие чаты

I'M doubting a lot about doing a refactor on a

plugin system I'm writing, I have the following architecture:

program.exe // contains the main and it's linked dynamically to core.so

core.so // contains the plugin system manager and the host functionality

plugin.so // it's a plugin, not linked to anything, dynamically loaded by core.so

I'm doubting how to expose the host functionality to the plugins:

1) Rely on the linker (I fear this option because it may not be portable)

2) Rely on dlsym/GetProcAddress over the current process

3) Inject with a struct of pointers to functions the API from the host to the plugin in the initialization / register entry point

1 and 2: May work without big refactors but may not be portable
3: May imply a fully refactor of all plugins

What do you think about it? What option would you choose? Do you know any other option?

PD: All exposed APIs (plugins/host) are written in C for improving portability.

4 ответов

22 просмотра

Boost::dll to the rescue.

Parra- Автор вопроса
Пользователь 61653
Boost::dll to the rescue.

that's already solved, I've got my own cross platform implementation for dlopen/GetProcAddress

Parra- Автор вопроса
Пользователь 61653
THen just use no 2.

Redis does something like that: https://github.com/RedisLabs/RedisModulesSDK/blob/c0740b8209abae38775adc6f3fefe05a520be55b/redismodule.h#L791

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта