我有一个用C ++编写的服务器,它位于命名管道的末尾,嗯,提供服务。可以发送到服务器的命令在枚举中定义,该枚举位于头文件中。
enum {
e_doThing1,
e_doThing2
...
e_doLastThing
};
将所需枚举的值放入发送到服务器的消息的第一个字节中,以便它知道该怎么做。我现在正在编写一个需要访问服务的C#客户端。
有什么方法可以将标题包含在C#代码中,这样我就不必在两个位置维护相同的列表了吗?
谢谢, 帕特里克
答案 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