首页 > 解决方案 > (c++/cli) C++ 使用 C# dll 获取任何枚举成员名称

问题描述

我正在使用 VS2010,我正在尝试使用 C# dll 来获取 C++ 中的任何枚举成员名称,

我的 C# dll 源代码:

namespace CSharpFuncion
{
    public class CSFun
    {
        public string GetEnumName(Enum en)
        {
            return Enum.GetName(typeof(Enum), en);
        }
    }
}

我的 C++ 代码

#using "CSharpFuncion.dll"
using namespace CSharpFuncion;
CSFun ^ csFun = gcnew CSFun;
cout << csFun->GetEnumName(MyTestEnum::E_A) << endl;

错误信息:

cannot convert parameter from 'MyTestEnum'  to 'System::Enum ^'

我该如何解决?

标签: c#c++enumsc++-clitypeof

解决方案


而不是

public enum MyTestEnum
{
        E_A = 1,
        E_B = 2
};

你需要做到

public enum class MyTestEnum
{
        E_A = 1,
        E_B = 2
};

所以只需添加class关键字。

并更改return Enum.GetName(typeof(Enum), en);return en.ToString()


推荐阅读