1

我正在尝试从托管的 .NET 应用程序访问 C++ 代码。为此,我需要在 C++/CLI 中为我需要的非托管 C++ 类编写.NET 包装器。

如果 C++/CLI 编译为普通的旧 CIL,那么为什么不能使用不安全的类在 C# 中编写相同的包装类,因为 C# 也支持指针?

是不是因为 C++/CLI 编译器与 C# 编译器不同,可以引用原生 C++ 代码而 C# 不能?

如果可以,我愿意,因为我对 C# 语法比对 C++ 更熟悉。

4

1 回答 1

2

您可以(尝试)并且通过足够的努力,您可能可以使事情顺利进行;即使没有诉诸unsafe代码。但我认为您会发现用于互操作情况的 C++/CLI 语法与 C# 非常相似。

然而,这种方法的最大问题可能是互操作层的长期维护。每次 C++ 方面发生变化时,您可能必须手动对 C# 进行更改。你不会从 C# 编译器中得到太多帮助,提醒你注意这些事情。只有在运行时无法在 DLL 中找到损坏的 C++ 名称时,您才会知道。

在 C# 中重新实现 C++ .H 文件也容易出错,尤其是当您需要相同的代码同时用于 32 位和 64 位时。

于 2013-03-21T15:24:04.727 回答