gpt4 book ai didi

C++/命令行界面 : How wrap unmanaged class with virtual methods to managed and use that from C#?

转载 作者:行者123 更新时间:2023-11-30 04:29:00 25 4
gpt4 key购买 nike

我是 C++/CLI 的新手,我想知道如何使用虚拟方法包装非托管 C++ 类,以便从 C# 管理和使用它?

非托管 C++ 类:

class IProgression
{
public:
virtual ~IProgression(void) {}
virtual void sendProgression(int amount, int present) = 0;
};

sendProgression方法用于向C#层发送进度信息。所以是回调。

我有其他非托管 C++ 类,其中设置了此进度回调:

virtual void setProgression(IProgression * pIProgression) = 0;

所以我需要通过 C++/CLI 设置从 C# 到非托管 C++ 的回调接口(interface),并通过 C++/CLI 将进度信息从非托管 C++ 返回到 C#。

既然我对此有点困惑,有人可以提供如何实现的建议吗?

最佳答案

你可以这样做:

public interface IManagedProgression {
void SendProgression(int amount, int present);
};

public class Wrapper : public IProgression {
public:
Wrapper(IManagedProgression^ c)
{
callBack = c;
}


void sendProgression(int amount, int present)
{
callBack->SendProgression(amount, present);
}

private:
gcroot<IManagedProgression^> callBack;
};

然后您可以用 C# 或其他语言实现 IManagedProgression 并将其包装在 Wrapper 对象中。

关于C++/命令行界面 : How wrap unmanaged class with virtual methods to managed and use that from C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715913/

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