gpt4 book ai didi

c# - 将数据从 C++ 传递到 C#

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:06 26 4
gpt4 key购买 nike

我正在研究开发一个需要从遗留的非托管 C++ 应用程序调用的 C# 应用程序。 C# 应用程序将创建一个 Winforms 或 WPF 窗口(仍在研究要使用的窗口),其中包含第三方控件。首先,我研究了使用 C++/CLR 包装器类来调用它,然后是 COM Interop。在将第三方控件添加到表单之前,这两种方法都很好。生产此控件的公司表示,当从非托管 C++ 调用时,他们不会支持他们的产品。

我现在正在考虑 C# 应用程序是一个独立应用程序的替代方案,然后我可以通过套接字或类似方式从 C++ 应用程序传递数据。

我想知道是否有人可以推荐最好的方法来做到这一点。我考虑过套接字或内存映射文件。我不确定什么是最好的方法,或者是否有更好的方法。

最佳答案

根据我的经验,通过 C++/CLI 包装器从 C# 调用 C++ 代码要比其他方式容易得多。我会尝试从 C# 应用程序编写一个主动请求程序,它会通过 c++/CLI 包装器向 c++ 代码请求信息。

谁使用数据或谁负责生成数据并不重要。这只是构造调用的问题

C++代码

bool do_you_have_something_for_me();
void get_data_from_cpp_code(HugeStructure &response);

C++/CLI 代码

ref class Wrapper
{

public bool waitForRequestCppCode()
{
if(do_you_have_something_for_me())
{
//call get_data_from_cpp_code and put the result in a nice .NET class
return true;
}
else return false;
}
}

c#代码

while(!waitForRequestCppCode())
{
//Do C# app stuff
}
//access the info from the wrapper and act, rinse and repeat

这只是一个很粗略的代码,可能有很多错误,只是为了证明一个观点。

关于c# - 将数据从 C++ 传递到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243774/

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