Подключаемые системы в C ++ сложны, потому что ABI не определен должным образом, и каждый компилятор (или его версия) следует своим собственным правилам. Однако COM в Windows показывает, что можно создать минимальную систему плагинов, которая позволит программистам с разными компиляторами создавать плагины для хост-приложения с помощью простого интерфейса.
Давайте будем практичными и оставим на минуту стандарт C ++, который не очень полезен в этом отношении. Если я хочу написать приложение для Windows и Mac (и, возможно, Linux), которое поддерживает плагины C ++, и если я хочу предоставить авторам плагинов достаточно большой выбор компиляторов (скажем, версии Visual C ++ менее двух лет) , Компилятор GCC или Intel C ++), на какие функции C ++ можно рассчитывать?
Конечно, я предполагаю, что плагины будут написаны для конкретной платформы.
Вдобавок ко всему, вот некоторые особенности C ++, о которых я могу подумать, и, как мне кажется, ответ:
- vtable layout, чтобы использовать объекты через абстрактные классы? (Да)
- встроенные типы, указатели? (Да)
- структуры, союзы? (Да)
- исключение? (Нет)
- внешние функции "C"? (Да)
- stdcall не внешние функции "C" со встроенными типами параметров? (Да)
- non-stdcall non-extern "C" функции с пользовательскими типами параметров? (Нет)
Буду признателен за любой опыт в этой области, которым вы могли бы поделиться. Если вам известно какое-либо приложение с умеренным успехом, в котором есть система плагинов C ++, это тоже здорово.
Карл