【问题标题】:Error while instantiating MATLAB Engine Interface through COM (Matlab C# Integration)通过 COM 实例化 MATLAB 引擎接口时出错(Matlab C# 集成)
【发布时间】:2013-04-28 16:41:19
【问题描述】:

我使用 COM 对象从 C# 调用 Matlab 函数。它可以运行,但在通过 COM 实例化 matlab 引擎接口时,在多次调用时会出现异常。

//用于通过COM实例化MATLAB引擎接口

    MLApp.MLAppClass matlab = new MLApp.MLAppClass();

它给出的异常:

无法将“MLApp.MLAppClass”类型的 COM 对象转换为接口类型“MLApp.DIMLApp”。此操作失败,因为 IID 为“{669CEC93-6E22-11CF-A4D6-00A024583C19}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:RPC 服务器不可用。 (来自 HRESULT 的异常:0x800706BA)。

我无法弄清楚这一点。任何帮助将不胜感激。

【问题讨论】:

  • 我相信 MATLAB COM 对象默认情况下只会创建一个 MATLAB 实例(我认为有一种方法可以阻止这种情况发生,但我想不起来了)因此,如果您尝试一次创建多个 MLAppClass 对象,它可能会失败。您在问题中提到“多次通话”;为什么不创建一个 MLAppClass 对象并重用它?

标签: c# matlab matlab-engine


【解决方案1】:

我遇到了同样的问题。我使用了 2 个私有函数,在该函数中创建了两个不同的 matlab 对象。然后我解决了matlab对象的全局问题(如下)。但你的问题可能不一样。

 public partial class Form1 : Form
 {
        #region ----> Global Variables
        // Create the MATLAB instance 
        MLApp.MLApp matlab = new MLApp.MLApp();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2010-11-05
    • 2014-10-07
    • 2010-12-15
    相关资源
    最近更新 更多