[英]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] = ¶m0;
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.