gpt4 book ai didi

c++ - 将非托管 C++ 方法传递给 C# dll 以进行回调

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:02 24 4
gpt4 key购买 nike

我有一个 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com