在unity中使用matlab

  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

你可能感兴趣的:(在unity中使用matlab)