在C 中使用单声道获得汇编类

Getting the Assembly classes using Mono in C++

本文关键字:声道 汇编 单声道      更新时间:2023-10-16

我正在创建游戏引擎,并且我正在使用单声道实现C#脚本系统。

我正在加载汇编信息,没有问题,直到我需要创建单镜。要创建一个单镜,我需要单图,名称空间和班级名称:

MonoClass* mono_class_from_name (MonoImage *image, const char* name_space, const char *name)

但是,如果我没有创建DLL,我该怎么知道名称空间和名称?(因为是用用户使用引擎制作的编译脚本)。

我应该使用其他功能加载单镜吗?哪一个?

我找到了解决方案:p

std::list<MonoClass*> GetAssemblyClassList(MonoImage * image)
{
   std::list<MonoClass*> class_list;
   const MonoTableInfo* table_info = mono_image_get_table_info(image, MONO_TABLE_TYPEDEF);
   int rows = mono_table_info_get_rows(table_info);
   /* For each row, get some of its values */
   for (int i = 0; i < rows; i++) 
   {
       MonoClass* _class = nullptr;
       uint32_t cols[MONO_TYPEDEF_SIZE];
       mono_metadata_decode_row(table_info, i, cols, MONO_TYPEDEF_SIZE);
       const char* name = mono_metadata_string_heap(image, cols[MONO_TYPEDEF_NAME]);
       const char* name_space = mono_metadata_string_heap(image, cols[MONO_TYPEDEF_NAMESPACE]);
       _class = mono_class_from_name(image, name_space, name);
       class_list.push_back(_class);
   }
   return class_list
}

如果您想要更多信息:metada访问