2

我有一个已注册的 .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 标题,如果有更简单的方法,我不想添加所有这些东西。

感谢您的阅读!

4

1 回答 1

3

好吧,这比我想象的要容易,但对我来说这似乎是巫术......

基本上在c++中添加

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

然后在c#中添加

public delegate void CppCallback();

当你想开火时,

Marshal.GetDelegateForFunctionPointer(cppCallback, typeof(CppCallback)).DynamicInvoke(null);
于 2013-01-14T21:02:31.500 回答