是否可以在 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 data
为 struct
!
【问题讨论】:
我不确定您所说的“导入到 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++ 类创建变量?的主要内容,如果未能解决你的问题,请参考以下文章