gpt4 book ai didi

.net - 如何将 C++ 项目转换为 .Net 或从 .Net 调用 C++ 项目?

转载 作者:行者123 更新时间:2023-11-28 08:33:41 25 4
gpt4 key购买 nike

我目前有一个巨大的项目,我最近从 VC6 转换到 2005。现在我真的很想为某些功能创建一个新的前端,但是该程序的主要逻辑是基于 c++ 的。此外,代码库围绕着它自己的元类型和定制类。

我能想到的最佳解决方案是从 C++ 项目 dll 调用函数。然而,这导致了巨大的数据编码投资,其中数据跨越了 c++ 和 c# 之间的界限。我想知道是否还有其他选择(完全重写不是一种选择)。

谢谢丰富

最佳答案

如果要为 native DLL 创建托管前端,则必须来回编码数据。确实没有办法避免这个问题。

我们当前的一个项目中正面临类似的问题。我们采用的方法是使用 PInvoke 与 Managed -> Native 对话。除了少数异常(exception),我们仅 PInvoke blittable 类型,这有助于降低编码(marshal)处理的成本,因为 CLR 可以将其实现为内存拷贝。

当通信 native -> 托管时,我们使用 COM 对象。我们尝试对 blittable 应用相同的规则,但我们发现在这种情况下您通常必须包含许多 COM 对象,这会阻止 blittable-ness。

采用这种方法对我们来说效果很好。我们花了一些时间来获取为数据编码定义的原语。但在那之后,由于找不到更好的词,编码变成了……例行公事。这是一种开销,但比完全重写要便宜得多。

关于.net - 如何将 C++ 项目转换为 .Net 或从 .Net 调用 C++ 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705706/

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