2010-12-14 6 views
0

Ich habe Mono CodeAnruf mono_method (Zeiger) von c

public static unsafe int* mono_method (int* p)
{
//....
return p;
}

und wollen es aus nativen c nennen

MonoObject *result = mono_runtime_invoke(mono_method, NULL, args, NULL);

ich einige verschiedene Zeiger ausprobiert, Variablen in der Args-Flag (sollte ungültig sein **)
aber immer SIGSEGV Fehler, wenn ich die Laufzeitaufruf ausführen.

Meine Frage ist: Ist es möglich, Zeiger von c zu mono über runtime_invoke und wie?

mit freundlichen Grüßen.

Antwort

1

Sie haben alles getestet werden, außer, was die Dokumentation sagt bei http://www.mono-project.com/Embedding_Mono: Die params Array, das die Argumente der Methode mit der gleichen Konvention enthält: MonoObject * Zeiger für Objektinstanzen und Zeiger auf den Werttyp anders.

void* args[1]; 
int val = 10; 
MonoObject *result; 
args [0] = &val; 
result = mono_runtime_invoke(mono_method, NULL, args, NULL); 
/* result will be a boxed IntPtr since pointer types can't be boxed themselves */ 
+0

Hmm, gut, dann ist die nächste Frage wäre, ist es möglich, einen Zeiger übergeben statt Zeiger auf Funktion, die Funktion in int und ausführen der Mono-Code? – Gobliins