我有一个已注册的 .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
但我们没有使用任何我不认为的 Windows header ,并且如果有更简单的方法来执行此操作,我也不想添加所有这些内容。
感谢您的阅读!
最佳答案
好吧,这比我想象的要容易,但对我来说这就像巫术......
基本上是在c++中添加
void CALLBACK CppCallbackc()
{
std::cout << "test";
}
然后在c#中添加
public delegate void CppCallback();
当你想开火时,
Marshal.GetDelegateForFunctionPointer(cppCallback, typeof(CppCallback)).DynamicInvoke(null);
关于c++ - 将非托管 C++ 方法传递给 C# dll 进行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325802/