c# - (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 ^'
我该如何解决?
解决方案
而不是
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()
推荐阅读
- javascript - PHP 的 base 64_decode 没有将 base 64 字符串转换为真正可行的图像文件
- android - 改造后预期 BEGIN_ARRAY 但在 android 中是 BEGIN_OBJECT
- adsense - adsbygoogle.push() 错误:availableWidth=0 没有插槽大小
- python - 在 for 循环中调整 matplotlib 散点图大小
- security - 扫描外部 IP 时 100% 开放端口误报
- javascript - 整数和 10^n 之间的除法会导致不精确的值吗?
- octobercms - 具有可重新分配变量/动态状态的十月 CMS 插件
- javascript - 如何在 JS 中编码这个碰撞事件(蛇头(数组中的最后一项)和水果之间)?
- java - 向哈希图中的列表对象添加值
- c++ - 如何比较两个不同大小的字符串