我正在尝试获取Mono程序集文件的所有类型和/或类的列表,但我无法找到如何执行此操作。我的目标是在C ++中加载assembly.dll
并读取其类型和类,以便我可以使用mono_class_get_fields
等。
这是我在.dll中使用已知类名尝试的内容,但class1
为NULL
。这里出了什么问题?
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;
}
答案 0 :(得分:0)
我必须将其他相关的dll放在同一个目录中,以便它也可以工作。