【发布时间】:2015-05-21 21:58:04
【问题描述】:
我已经搜索了很多答案,但找不到答案。 我有一个连接我的 c# 和我的 c++ 代码的 c++/CLI 包装器。 我想将一个指向参数的指针作为 run 函数的输入参数的一部分传递,这将表达程序的状态。
在 c++ 中,我定义了一个枚举: 枚举状态码 { INIT,BEGIN, CFG_STARTED, CFG_COMPLETED, STAGE1, STAGE2, DONE}
我的 c# 代码中有相同的枚举:
public enum statusCode
{
INIT, BEGIN, CFG_STARTED, CFG_COMPLETED, STAGE1, STAGE2, DONE
}
我在 C++ 代码中有一个运行函数,它获取指向状态的指针: 无效运行(状态码*状态);
在我使用的 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++)
【问题讨论】:
-
鸡和蛋,改为在 C++/CLI 代码中声明枚举。使用 `public enum class StatusCode { Init, Begin, ... };