调试Matlab生成的DLL时,C#VS2012 vshost.exe崩溃

时间:2015-01-07 16:00:44

标签: c# .net matlab

我可以运行visual studio调试器并调试该程序的第一部分(使用MWNumericArray)。一旦我尝试实例化由MatLab生成的ankur_dummy中的DLL类,它就会崩溃。我得到“ VSHost.exe已停止工作

如果我执行“调试 - >启动而不调试”,它运行正常。

所以调试器似乎没有Matlab dll的问题,只是生成的问题。

运行MCR 7.15 X64

有什么想法吗?

static void Main(string[] args)
{
    try
    {
        double[,] testDblArr = new double[2,5];

        testDblArr[0,0] = 1;
        testDblArr[0,1] = 2;
        testDblArr[0,2] = 3;
        testDblArr[0,3] = 4;
        testDblArr[0,4] = 5;
        testDblArr[1,0] = 1.1;
        testDblArr[1,1] = 1.2;
        testDblArr[1,2] = 1.3;
        testDblArr[1,3] = 1.4;
        testDblArr[1,4] = 1.5;

        MWNumericArray testArr = new MWNumericArray( testDblArr );

        DisplayNumericArrary(testArr);

        ankur_dummy_2011.ankur_dummy test = new ankur_dummy();

        MathWorks.MATLAB.NET.Arrays.MWArray arr = test.dummy_function();

        MWNumericArray nArr = arr as MWNumericArray;

        if (nArr == null)
        {
            System.Console.WriteLine("Not a NumericArrary!");
            return;
        }

        DisplayNumericArrary(nArr);

        arr.Dispose();
        testArr.Dispose();

        System.Console.WriteLine("Done");
        System.Console.ReadKey();
    }
    catch (Exception ex)
    {
        System.Console.WriteLine("Ex = ({0})", ex);
    }
}

1 个答案:

答案 0 :(得分:1)

好的,我找到了一个简单的解决方案。

禁用Visual Studio托管过程。

在项目设置下 - >调试 - >启用调试器

取消选中“启用Visual Studio托管流程”

我会注意到在另一台机器上(实际上是创建DLL的人),运行Win7而不是我的Win8.1,并且安装了MatLab(不仅仅是MCR),他甚至可以通过视觉调试工作室托管过程启用。他也可以使用不同版本的Visual Studio,但不确定。