Обтекание класса чистыми виртуальными методами

У меня есть неуправляемый DLL, который содержит класс только с чисто виртуальными методами (вид обратных вызовов):

class PAClient
{
public:
__declspec(dllexport) virtual void SetCalculationStarted() = 0;
__declspec(dllexport) virtual void SetCalculationStopped() = 0;
}

Теперь я должен отправить эти вызовы функций в управляемый код C # и решил использовать интерфейс для этого. Вот что я сделал:

public interface class IPAClientWrapper
{
void SetCalculationStarted();
void SetCalculationStopped();
};

private class PAClientWrapper : public PAClient
{
private:
gcroot<IPAClientWrapper^> callBack;

public:

PAClientWrapper(IPAClientWrapper^ c)
{
callBack = c;
}

void SetCalculationStarted()
{
callBack->SetCalculationStarted();
}

void SetCalculationStopped()
{
callBack->SetCalculationStopped();
}
}

Но каждый раз, когда неуправляемый SetCalculationStarted() неуправляемый код выдает исключение:

An unhandled exception of type 'System.AccessViolationException' occurred in PAnalysisLib.dll

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

РЕДАКТИРОВАТЬ:

public partial class Form1 : Form, IPAClientWrapper
{
public Form1()
{
InitializeComponent();
}

public void SetCalculationStarted()
{
Console.WriteLine("started");
}

public void SetCalculationStopped()
{
Console.WriteLine("stopped");
}

}

Я что-то пропустил?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]