是否可以从本机C++;C#类?

是否可以从本机C++;C#类?,c#,c++,.net,visual-c++,c++-cli,C#,C++,.net,Visual C++,C++ Cli,有两个独立的项目正试图这样沟通: 在C++ CLI 中,我遵循了 > < >类 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++ CLI

中,我遵循了<强> > < <强> >类
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共享字段和方法?


编辑:也可以将
类数据
假设为
结构

我想您可能需要将其设置为
ref类

public ref class Data{
    public:
    int x;
}

C#无法以您现在拥有的方式构造
数据。它不在托管堆上
ref
将使其显示在托管堆上。如果你想
数据
保持非托管状态,你必须编写一个包装器。

我不知道你说的“导入到你的C#项目”是什么意思。在一个项目中不能有C和C++。您的意思是在一个解决方案中引用C#项目中的CLI程序集吗?@DStanley我已编辑了我的答案,请再次检查。是的,我可以这样做,但正如您所看到的,它是一个本机类。我的回答也很大胆。我不能在那里使用托管类。你能解释一下如何编写包装器吗?@Mahdi那么恐怕你不能这样进行互操作。我相信应该有办法实现这一点,因为类数据对我的C#项目是可见的。