我有一个.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 ++代码来处理它,包括事件args。我很高兴自己做阅读,但我根本找不到任何东西。我确实看到了一些关于Windows事件的东西......在这里 http://msdn.microsoft.com/en-us/library/windows/desktop/aa385771(v=vs.85).aspx
但我们没有使用任何我不认为的Windows标题,如果有更简单的方法,我不想添加所有这些内容。
感谢您阅读!
答案 0 :(得分:3)
基本上在c ++ add
中void CALLBACK CppCallbackc()
{
std::cout << "test";
}
然后在c#add
中public delegate void CppCallback();
当你要发射它时,
Marshal.GetDelegateForFunctionPointer(cppCallback, typeof(CppCallback)).DynamicInvoke(null);