Я создаю платформу плагинов, как указано в учебнике, введите описание ссылки здесь
Здесь класс PluginInterface выглядит
class PluginInterface
{
public:
PluginInterface(){}
virtual ~PluginInterface(){}
virtual int Activate()=0;
virtual int Execute()=0;
virtual int Destroy()=0;
};
Вместо этого я хочу, чтобы мой класс плагина был следующим:
class PluginInterface
{
public:
PluginInterface(){}
virtual ~PluginInterface(){}
virtual int Process(Image *)=0;
};
Возможно ли, что я смогу передать Image * из моего приложения в плагин, и плагин может сделать некоторую обработку на нем?
Изображение - объект gdiplus. Мое мышление заключается в том, что плагин dll будет загружен в том же пространстве памяти, что и в applicaiton, поэтому, если мое приложение выделяет память для объекта Image, так что должно быть доступно и для плагина, и плагин может выполнять операции над этим изображением.
Если это возможно, тогда мне нужно статически связать плагин с gdiplus.lib, используя
#pragma comment(lib, "gdiplus.lib")
Поскольку мое приложение уже статически связано с gdiplus, я не уверен, что это снова требуется для плагина.
Это потребуется, если вы вызовете любые функции gdiplus.dll из своего плагина и скомпилируете плагин отдельно от своего хост-приложения.
И, честно говоря, это называется неявным динамическим связыванием, а не статичным.