在C ++ / CLI中,我在类中定义了一些实例,如下所示。
public ref class A
{
public:
int test(){return 0;}
};
public ref Class B
{
public:
static A^ a_Instance = gcnew A();
};
在C#方面,我创建了一个B实例,以便尝试使用a_Instance中的函数,如下所示。
private B b_instance = new B();
问题是,如果我可以在托管C ++类中创建实例并使用其中的函数?
答案 0 :(得分:1)
这是一个示例代码,说明如何执行此操作。首先,定义您的托管类(将它们标记为ref和public)。这应该在C ++ / CLI项目中编译。
// CCLI.h
#pragma once
using namespace System;
namespace CCLI {
public ref class A
{
public:
int test(){return 0;}
};
public ref class B
{
public:
static A^ a_Instance = gcnew A();
};
}
然后,添加程序集作为C#项目的引用,您可以这样使用这些元素:
namespace CSharp
{
class Program
{
static void Main(string[] args)
{
CCLI.B b_instance = new CCLI.B();
CCLI.B.a_Instance.test();
}
}
}
两个细节:C ++ / CLI中使用的A实例是通过静态字段,因此您希望静态引用它。此外,您希望确保在为给定体系结构(32位或64位)编译C ++ / CLI时,使用它的点网组件将在适当的体系结构(x86或x64)中启动。