簡體   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