gpt4 book ai didi

c# - 如何从 C 代码创建 C# 对象?

转载 作者:行者123 更新时间:2023-11-30 02:13:03 24 4
gpt4 key购买 nike

我正在使用小型 C 网络服务器。我正在使用 C# 库进行一些实际的请求处理。

我正在使用一个似乎是用接近 C++ 的东西编写的粘合层来连接两个世界。它提供了一个“公共(public)引用类”,我可以在 C# 世界中从中派生。

如果我想在 C# 中从中派生几个不同的类,我如何从 C/C++ 创建这些派生类的实例?

我应该从 C# 向 C/C++ 代码传递什么信息(类名?工厂函数?)(以什么形式)?

我想要一个与 .NET 2.0 兼容的解决方案,并且我正在使用 Visual Studio 2008 来创建我的代码。

最佳答案

我已经多次意识到人们有时并不完全了解托管代码和非托管代码之间的区别,所以我想总结一下:

  1. 您不能简单地从 native C++ 应用程序调用托管代码。为了调用它,您首先必须将您的 .Net 代码公开给 COM,然后在 C++ 中实例化一个 COM 对象。通过这种方式,您的 native 应用程序认为它正在像创建任何其他对象一样创建 COM 对象,而 .Net 在运行时执行所有互操作。

  2. 第二种方法是使用托管 C++/CLI(它不是 native C++,但支持两个世界)。通过这种方式,C++ 和 C# 应用程序都得到管理并且可以无缝通信。因此,只要“粘合层”是使用托管 C++/CLI 编写的,您就可以同时使用 native 数据和托管数据。

正如您最初提到的非托管 C++,那么答案就是第一个解决方案:通过 COM 互操作将托管对象公开给本地世界。如果您不介意使用托管 C++/CLI,那么您有一个更简单的解决方案 - 您可以轻松地实例化托管类(只需对语法进行一些更改,您应该很快就会习惯)。

关于c# - 如何从 C 代码创建 C# 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018413/

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