将枚举类型ref从c#传递到c++/将CLI包装器传递到c++
passing an enum type ref from c# to c++/CLI wrapper to c++
我已经搜索了很多答案,但无法找到一个。我有一个c++/CLI包装器连接我的c#和我的c++代码。我想传递一个指向实参的指针,作为run函数的输入形参的一部分,它将表示程序的状态。
在c++中,我定义了一个枚举:enum 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;
}
我只是不知道如何声明运行函数以及如何在包装器(CLI/c++)中描述它
你不需要在c++/CLI中声明枚举,你只需要在c#和c++/CLI代码引用的共享程序集中声明枚举,这样你就可以在两个地方使用它。
例如public enum statusCode
{
INIT, BEGIN, CFG_STARTED, CFG_COMPLETED, STAGE1, STAGE2, DONE
}
然后在c#和c++/CLI项目中引用这个shared.dll,并在需要时使用枚举
相关文章:
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- 如何将 C++/CLI 库链接到C++应用程序
- C++/CLI targetting .NET Core 3.1
- 模板函数签名在 C++/CLI 中解包
- C++/CLI 混合托管/本机 DLL 不起作用
- C++/CLI 和 C#/VB 与不安全和外部有什么区别?
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- DirectX 12 和 C++ CLI :无法使用IID_PPV_ARGS
- 如何为要在 C# 中使用的静态库创建 C++ 或 C++/CLI 包装器
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- C++/CLI -- 访问结构成员
- 如何将字符串从 C++/CLI 方法返回到调用它的非托管C++
- 如何将CLI类的函数指针作为参数传递给C++方法
- 用于LabView中使用的本机c++的c++/cli dll包装器
- C#WPF和C++/CLI以及C++在C++/CLI中添加外部库错误
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误