[英]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.