从C ++中的Mono Assembly.dll获取所有类型/类的列表

时间:2017-02-05 01:35:33

标签: c++ mono

我正在尝试获取Mono程序集文件的所有类型和/或类的列表,但我无法找到如何执行此操作。我的目标是在C ++中加载assembly.dll并读取其类型和类,以便我可以使用mono_class_get_fields等。

这是我在.dll中使用已知类名尝试的内容,但class1NULL。这里出了什么问题?

ExampleClass正在System.Object投放mscorlib.dll。是否需要进行某种链接才能在我的C ++代码中获得正确的MonoClass *

这是我尝试过的,但mono_class_from_name会返回NULL

#include <windows.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/mono-config.h>
#include <mono/metadata/appdomain.h>
#include <mono/jit/jit.h>

int main()
{
    mono_set_dirs("C:\\Program Files\\Mono\\lib", "C:\\Program Files\\Mono\\etc");

    MonoDomain *domain;

    domain = mono_jit_init("test");

    MonoAssembly *assembly = mono_domain_assembly_open(domain, "C:\\Users\\Ik\\Documents\\Visual Studio 2015\\Projects\\MonoExtractor\\x64\\Debug\\Assembly-CSharp.dll");
    MonoImage *image = mono_assembly_get_image(assembly);

    // testing to see if I can get a known class
    MonoClass *class1 = mono_class_from_name(image, "", "ExampleClass");

    if (!class1) {
        printf("Could not find class!\n");
    }

    system("pause");

    return 0;
}

1 个答案:

答案 0 :(得分:0)

我必须将其他相关的dll放在同一个目录中,以便它也可以工作。