1
안녕하세요 저는 임베디드 모노와 NaCl을 사용하고 있습니다. 모든 것이 지금까지는 작동하지만, .NET에서 exe를 실행 한 것과 같은 스레드가 아닌 c에서 .NET 메소드를 호출하는 방법은 idk입니다.임베디드 모노 : 다른 스레드에서 'mono_runtime_invoke'를 사용하는 방법
void Mono_InvokeMethod(const char* assemblyName, const char* method, const char* arg)
{
MonoAssemblyName* man = mono_assembly_name_new(assemblyName);
assert(man);
MonoAssembly* ma = mono_assembly_loaded(man);
assert(ma);
MonoImage* mi = mono_assembly_get_image(ma);
assert(mi);
MonoMethodDesc* mmd = mono_method_desc_new(method, "Second.Program" /* include_namespace */);
assert(mmd);
MonoMethod* mm = mono_method_desc_search_in_image(mmd, mi);
assert(mm);
void *args[1];
args[0] = mono_string_new(mono_get_domain(), arg);//mono_get_root_domain() <<<<<<< Maybe use this instead
mono_runtime_invoke(mm, NULL /* "this" object */, args, NULL /* exception */);
}
늦은 응답을 기다립니다. 지금은 'mono_method_desc_search_in_image'에 매달려 있습니다 ... 결코 'mono_runtime_invoke'가됩니다. – zezba9000
@ zezba9000 : gdb로 디버깅 해보세요. 스레드가 무엇을하려고하는지 알려줍니다. 일부 API에 대한 잠금 요구 사항이 있다고 생각합니다 (단, 사용하는 API는 확실하지 않음). 모노 소스 코드는 이에 대한 힌트를 제공해야합니다. –
NaCl (Native Client)에서 모노를 사용하고 디버깅으로 프로젝트를 실행할 수 없다고 생각합니다. Chrome 콘솔 창에서 런타임 오류에 의존해야합니다. 나는 네가 정답이라고 확신하고, 다른 조각들이 작동하는 중간에있다. Tnx – zezba9000