繁体   English   中英

如何使用嵌入式 mono 将字符串参数传递给 c# 方法?

[英]How to pass string parameter to c# method using mono embedded?

我想使用嵌入的 mono 将string参数传递给 c# 方法。 这是 c# 方法:

public static void CallMe(string value)
{
    Console.WriteLine(value);
}

这是 c++ 电话:

PVOID method = mono_class_get_method_from_name(Class, string("CallMe").c_str(), 1);
mono_runtime_invoke(method, NULL, new void*[1] { (void*)"Hello World!\0" }, NULL); 

打印的值为空字符串或问号。 我该如何解决这个问题?

您必须首先使用mono_string_new 将您的字符串转换为 MonoString

如果要传递值类型,则需要传递一个指针(字符串已经是一个指针)。

请记住将mono_class_get_method_from_name中的param_count设置为 C# 方法中的参数数量。

C++:

void RunMonoMethodWithParams(MonoDomain* domain, PCHAR _namespace, PCHAR _class, PCHAR _method, PCHAR param1)
{
    .
    .
    .
    //Open assembly, get image, class from name...
    .
    .
    .

    PVOID method = mono_class_get_method_from_name(_class, _method, 2);
    
    int param0 = 0xFF;

    //Each index equals 1 parameter
    PVOID args[2];
    args[0] = &param0;
    args[1] = mono_string_new(domain, param1);

    mono_runtime_invoke(method, NULL, args, NULL);
}

C#:

public static int CSharpMethod(int param0, string param1)
{
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM