是否可以在 C# 中从本机 C++ 类创建变量?

Posted

技术标签:

【中文标题】是否可以在 C# 中从本机 C++ 类创建变量?【英文标题】:Is it possible to create a variable from native C++ class in C#? 【发布时间】:2013-03-11 18:57:41 【问题描述】:

有两个独立的项目试图像这样进行交流: 我在 C++ CLI 中有以下 native

public class Data
    public:
    int x;

导入是指在我的 C# 项目中添加了对 C++ CLI 项目的引用。 另一方面,我将这个 C++ CLI 项目导入到我的 C# 项目中,并且在 C# 中我想做:

Data k = new Data() //It's ok till here
int b = k.x; //The field x is not visible here !

有没有办法强制 C# 或 C++ CLI 共享字段和方法?编辑:C# 还假设 class datastruct

【问题讨论】:

我不确定您所说的“导入到 C# 项目中”是什么意思。 一个项目中不能有 C# 和 C++ CLI。你的意思是你在一个解决方案中从你的C#项目中引用CLI 程序集 @DStanley 我已经编辑了我的答案,请再次检查。 【参考方案1】:

我想您需要将其设为ref class

public ref class Data
    public:
    int x;

C# 不能像现在这样构造Data。它不在托管堆上。 ref 将使其显示在托管堆上。如果您希望 Data 保持不受管理,则必须编写一个包装器。

【讨论】:

是的,我可以这样做,但正如您所见,它是一个原生类。我的回答也很大胆。我不能在那里使用托管类。 你能解释一下如何编写包装器吗? @Mahdi 那么恐怕你不能像那样互操作。 我确信应该有办法实现这一点,因为 Data 类对我的 C# 项目是可见的。 ***.com/questions/2691325/…

以上是关于是否可以在 C# 中从本机 C++ 类创建变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 调用 C++ 类

在 WP8 中从 C++ 代码调用 C# 方法

创建可以从 c# 和 c++ 中使用的 c# dll

在本机 C++ 中将变量从 C# 编组为 void*,并在本机程序内更改 Managed/C# 中的变量值

在 C# 中从 Informix 表创建类

如何在非控制器类中从 Microsoft.AspNetCore.Identity 获取 UserID