我试图从C#访问C ++类头(.h)中的枚举。有一个简单的方法吗?我看到的每个例子都涉及将类编译成.dll,对于这个例子来说这是一种浪费,因为这个类的功能非常有限。
按请求编辑:可以修改C ++库。事实上,C ++库是项目(固件)的主要组成部分,由我团队的其他成员开发,C#(我的部分)仅用于单元测试目的。
答案 0 :(得分:7)
实际上,您有三种选择:
extern "C"
)并返回您感兴趣的枚举值,然后从C#调用此库。答案 1 :(得分:0)
为了访问C ++枚举,您必须将C ++类转换为.NET可以识别的东西,这或者意味着将其编译为C ++ / CLI(如果这是一个选项)或者转换为DLL。 NET互操作可以访问。
答案 2 :(得分:0)
好吧,这让CS预编译器有点怪,但它构建了:
#if CSHARP
namespace Test
{
public enum SharedEnum
#endif //CSHARP
#if CPP
typedef enum SharedEnum
#endif //CPP
{
One,
Two,
Three
}
#if CPP
SharedEnum
#endif //CPP
;
#if CSHARP
};
#endif
只需将条件编译符号CSHARP
添加到C#项目中,将现有的.cs文件和预处理器定义CPP
添加到C ++项目中。
(感谢Yakk有同样的想法)