在c ++中使用enum,在c ++头文件中使用c#

时间:2010-08-11 11:11:10

标签: c# c++

我有一个用C ++编写的服务器,它位于命名管道的末尾,嗯,提供服务。可以发送到服务器的命令在枚举中定义,该枚举位于头文件中。

enum {
    e_doThing1,
    e_doThing2
    ...
    e_doLastThing
};

将所需枚举的值放入发送到服务器的消息的第一个字节中,以便它知道该怎么做。我现在正在编写一个需要访问服务的C#客户端。

有什么方法可以将标题包含在C#代码中,这样我就不必在两个位置维护相同的列表了吗?

谢谢, 帕特里克

4 个答案:

答案 0 :(得分:3)

如果要将枚举放在命名空间中并为其命名,则可以直接将头文件添加到C#项目中。

用最终解决方案编辑:
这种方式不起作用,但反过来 - 将标题命名为.cs并包含在C#项目中,然后从C ++中包含#include。

答案 1 :(得分:1)

您是否可以使用自动化流程生成文件的副本,例如在C#项目中定义的预构建步骤?您需要做的就是创建一个文件的副本,我想在“enum”和“{”之间添加一个名称。

编辑:根据您的C ++服务器公开的接口类型,.NET甚至可以自动生成接口文件。例如,如果这个枚举是在COM接口或.NET远程接口中定义的,我认为会有自动的方法根据服务器的编译代码在客户端上生成枚举。

答案 2 :(得分:1)

您可以使用托管C ++。在托管C ++项目中包含标头,您可以在C#中使用它。

答案 3 :(得分:0)

您可以像这样使用宏定义: 在C#包装器上:

public enum class eAlgId
 {
   ENUM_PARAMETERS
 };

on cpp:

enum ProcAlgID
{
 ENUM_PARAMETERS 
};

和.h文件,两者都知道:

#define ALG_ENUM_PARAMETERS \

et1 = 0,et2,et3,et4