interop — передает неуправляемый метод C ++ в C # dll для обратного вызова

У меня есть .Net dll, который я зарегистрировал и могу вызывать методы из моего кода C #.
Я по сути следовал этому уроку: http://support.microsoft.com/kb/828736

теперь мне нужно сделать что-то в c # асинхронно, поэтому мне нужен какой-то способ рассказать о коде c ++, который я сделал.

Я создал такой метод:

public void Init(string server, IntPtr callback);

который я вижу в C ++ как:

Init(BSTR server, long callback);

Мне также нужно передать переменную обратно в код C ++, когда я вызываю ее.

В основном, у меня есть событие, которое запускается в коде C #, и мне нужен код C ++ для его обработки, включая аргументы событий.

Я рад читать сам, но ничего не могу найти. Я видел кое-что о событиях Windows … здесь
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385771(v=vs.85).aspx

но мы не используем заголовки окон, я не думаю, и я не хотел добавлять все эти вещи, если есть более простой способ сделать это.

Спасибо за чтение!

0

Решение

хорошо, это проще, чем я думал, но мне кажется, что это вуду …

в основном в C ++ добавить

void CALLBACK CppCallbackc()
{
std::cout << "test";
}

затем в C # добавить

public delegate void CppCallback();

и когда ты хочешь уволить,

Marshal.GetDelegateForFunctionPointer(cppCallback, typeof(CppCallback)).DynamicInvoke(null);
1

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

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

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