Mono c# Получение класса - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать экземпляр класса и вызвать функцию класса c#, используя mono с c ++.

Мой код:

mono_config_parse(NULL);
mono_set_assemblies_path("C:\\Users\\Oriorii\\Desktop\\MonoTest\\MonoScripts\\dlls");

MonoDomain* domain = nullptr;
domain = mono_jit_init("MonoScripts");

MonoAssembly* assembly = mono_domain_assembly_open(domain, "CSharp.dll"); // works
MonoImage* image = mono_assembly_get_image(assembly); // works

mono_jit_exec(domain, assembly, argc, argv); 

MonoClass* klass = mono_class_from_name(image, nullptr, "Class1"); // fails


MonoMethodDesc* ctorDesc = mono_method_desc_new("Class1:Class1()", false); // works
MonoMethod* ctorMethod = mono_method_desc_search_in_class(ctorDesc, klass); // fails because klass is nullptr


MonoMethodDesc* doDesc = mono_method_desc_new("Class1::PrintTest()", false); // works
MonoMethod* doMethod = mono_method_desc_search_in_class(doDesc, klass); // fails because klass is nullptr


mono_jit_cleanup(domain);

И мой c# is:

using System;

public class Class1
{
    public void PrintTest()
    {
        Console.WriteLine("HELLO!!");
    }
}

Проблема заключается в этой строке 'MonoClass * klass = mono_class_from_name (image, nullptr, "Class1");' что эта функция возвращает nullptr, но на следующей строке я делаю 'MonoMethodDes c* ctorDes c = mono_method_desc_new ("Class1: Class1 ()", false);' не возвращает nullptr. Поэтому я не понимаю, что происходит.

Я также пытался поместить класс c# в пространство имен, но это происходит по той же проблеме.

...