Передать указатель на экземпляр с виртуальными методами из C # в C ++ DLL без обновления исходного кода DLL - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть C ++ DLL с API-интерфейсом SetTrace () для отчетов о ходе выполнения, для которого требуется указатель на экземпляр, реализующий IReporter. Обновление исходного кода C ++ не вариант.

Оба определены в C ++ как:

void __stdcall SetTrace(int level, IReporter *reporter);

class IReporter
{
  public:
    virtual void SetProgress(int iProgress) = 0;
    virtual void SetMessage(const char* pszMsg) = 0;
};

Мне нужно создать оболочку C #, которая использует DLL SetTrace (). Не могли бы вы дать мне идею маршалинга таких методов из C # в C ++?

Хитрость заключается в виртуальных методах и управлении v-таблицами ... Заранее спасибо!

...