我已经搜索了很多答案,但找不到答案。 我有一个c ++ / CLI包装器,它连接我的c#和我的c ++代码。 我想传递一个指向参数的指针作为run函数的输入参数的一部分,它将表示程序的状态。
在c ++中我定义了一个枚举: 枚举statusCode { INIT,BEGIN,CFG_STARTED,CFG_COMPLETED,STAGE1,STAGE2,DONE}
我的c#代码中有相同的枚举:
public enum statusCode
{
INIT, BEGIN, CFG_STARTED, CFG_COMPLETED, STAGE1, STAGE2, DONE
}
我在c ++代码中有一个run函数,它获取指向状态的指针: void Run(statusCode * status);
在我正在使用的C#方面:
public static statusCode program_status = statusCode.INIT;
wrapper.Run(ref program_status);
现在在C ++ / CLI界面中我被卡住了......
public ref class Wrapper
{
public:
int run(System::String^ outputDir, statusCode% returnStatus);
}
在cpp文件中:
int CMSWrapper::run(statusCode% returnStatus)
{
errorCode ret;
ret = m_Controller->Run( static_cast<statusCode*>(returnStatus));
return ret;
}
我只是想弄清楚如何声明Run函数以及如何在包装器中描述它(CLI / C ++)
答案 0 :(得分:1)
您不需要在C ++ / CLI中声明枚举,只需要在共享程序集中声明枚举,由C#和C ++ / CLI代码引用,这样您就可以在两个地方都使用它。
例如,在C#shared.dll
中public enum statusCode
{
INIT, BEGIN, CFG_STARTED, CFG_COMPLETED, STAGE1, STAGE2, DONE
}
然后在C#和C ++ / CLI项目中引用此shared.dll并根据需要使用枚举