Давайте предположим, что у меня есть неуправляемый класс Test :
class Test
{
public:
int SomeMethod(int a, bool b);
};
Чтобы создать новый экземпляр Test, я бы:
Test *test = new Test();
Моя цельзаключается в том, чтобы встроить Mono, чтобы управляемый код мог вызывать неуправляемые методы (например, Test::SomeMethod
) в конкретном объекте.Я представляю этот объект путем передачи указателя этого объекта в управляемый метод, например так:
void *args[1];
args[0] = &test;
mono_runtime_invoke(init, NULL, args, NULL);
Вот как выглядит вызываемый управляемый метод:
public static void Init(IntPtr test)
{
}
Отсюда, как я могу вызвать Test.SomeMethod
?
Я думал об использовании инструкции CALLI
, используя System.Reflection.Emit
, но как я могу ссылаться на объект, указатель которого test
(первыйпараметр Init
) имеет в виду?
Я не хочу использовать DllImport
.