在unity中使用matlab

作者: Reyuwei | 来源:发表于2017-09-21 14:00 被阅读850次
    1. 直接在unity中使用MATLAB语句
      http://blog.csdn.net/zhupumao/article/details/51996113
      其中,MLAPP是COM,unity不能调用。只能用tlbimp转换成dll文件
      https://docs.microsoft.com/en-us/dotnet/framework/interop/how-to-generate-primary-interop-assemblies-using-tlbimp-exe
      http://blog.csdn.net/wangmingjiu/article/details/5404225
      然而转出来是.net 4.0,unity不支持,参考下面可以转出.net 3.5的
      https://stackoverflow.com/questions/2659738/visual-studio-2010-tlbimp-generates-net-4-0-interops-in-2-0-projects
      把该引用的东西都放到unity-plugin文件夹下,vs就会自动更新引用​

    2. matlab文件编译成dll,用unity调用
      用matlab的deploy tool中的library compiler编译为.net assembly,选target为3.5
      然后加到unity的plugin里面,正常调用


    然而1/2都最后都TM​遇到这个error!!!NotImplementedException: The requested feature is not implemented.

    1. matlab编译成exe,用c#调用exe
      http://blog.chinaunix.net/uid-22982394-id-2871946.html
      ↑ 参考第一条,直接用代码编译

    用application compiler打包出来的会有splash界面,直接编译的只会有命令行界面

    用c#调用exe并传参

    string argument1 = "\"" + "test.png" + "\"";
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.FileName = System.Environment.CurrentDirectory + "\\frommatlab\\skeleton.exe";
    process.StartInfo.Arguments = argument1;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.RedirectStandardOutput = true;
    //启动  
    process.Start();
    //等exe结束在运行后面的代码
    process.WaitForExit();
    

    不显示命令行界面方法参考下面
    https://stackoverflow.com/questions/23384435/how-can-i-hide-the-cmd-console-from-my-matlab-exe

    相关文章

      网友评论

      • MrNeXT:所以 1/2 的问题能解决吗?
        Reyuwei:NotImplementedException这个错误应该是unity内部没有实现相应的.net功能,我当时用的unity2017,也许新版的可以,但我没有再试过。

      本文标题:在unity中使用matlab

      本文链接:https://www.haomeiwen.com/subject/jnbzsxtx.html