Mono c# 嵌入,mono_runtime_invoke 崩溃应用

Posted

技术标签:

【中文标题】Mono c# 嵌入,mono_runtime_invoke 崩溃应用【英文标题】:Mono c# embedding, mono_runtime_invoke crash app 【发布时间】:2017-12-02 03:41:46 【问题描述】:

我正在将 Mono 嵌入到我的 c++ 应用程序中。我遇到了mono_runtime_invoke() 的问题。

这里是调用mono_runtime_invoke的方法:

void CSScript::CallFunction(MonoMethod * function, void ** parameter)

   inside_function = true;
   MonoObject* exception = nullptr;

   MonoObject* obj = mono_runtime_invoke(function, mono_object, parameter, &exception);

   if (exception)
   
       mono_print_unhandled_exception(exception);
   


//---------------------

CallFunction(start, nullptr);

这里是我调用的 c# 函数 (Start()):

public class Nngf 

   void Start ()
   
       GameObject go = null;
       go.SetName("Hi!");
   

如您所见,Start 方法正在从 null 类 (Gameobject) 调用方法 (SetName),我应该在 c++ CallFunction() 方法中得到 NullReference 异常。但相反,应用程序崩溃了:

我已经在 Unity 中测试了 c# 脚本,但出现 NullReference 错误。

我需要做什么?我错过了什么?

【问题讨论】:

【参考方案1】:

解决了。我只需要停用“抛出此异常时中断”选项,然后应用程序继续运行,我就可以收到异常消息。

【讨论】:

以上是关于Mono c# 嵌入,mono_runtime_invoke 崩溃应用的主要内容,如果未能解决你的问题,请参考以下文章

将 mono 与嵌入它的 c++ 应用程序捆绑在一起

在 Unity3D 的 Mono 虚拟机中嵌入 Lua 的一个方案(转载)

如何使用嵌入在 C++ 中的单声道编译 C# 代码?

在 Mono 中将 C++ 暴露给 C#:函数的无效转换?

将参数从 C 传递到 Embedded Mono

单声道嵌入,从 C 调用 C# 泛型方法