你能用c#编写c++包装器而不用c++ /CLI吗?

本文关键字:c++ CLI 包装 编写 | 更新日期: 2023-09-27 18:05:10

我试图从托管。net应用程序访问c++代码。要做到这一点,我需要为我需要的非托管c++类编写。net包装器,在c++/CLI中。

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

是因为c++/CLI编译器不同于c#编译器,可以引用本地c++代码,而c#不能吗?

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

你能用c#编写c++包装器而不用c++ /CLI吗?

你可以(尝试),只要付出足够的努力,你可能会让事情顺利进行;即使不使用unsafe代码。但是我认为你会发现c++/CLI的互操作语法与c#非常相似。

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

在c#中重新实现c++ . h文件也很容易出错,特别是当您需要相同的代码同时用于32位和64位时。