您的位置:首页 > 编程语言 > MATLAB

关于matlab与c#混合编程产生的移植问题

2007-01-29 23:19 357 查看
这个问题曾经差点让我的毕业设计的程序没办法拿出去演示。其实这也是个很现实的问题,你做好的程序如果不能在别人的机子上运行,那么它有什么应用价值呢?说来也惭愧,我以前编写过很多的程序都出现过移植性难的问题。我想一个很主要的原因是在一个程序开发者使用的机子上,往往是具备了非常完整的软件运行环境,但程序运行时有可能需要调用外部的程序或函数,这些平时我们可能不会去注意。也就造成软件发布时移植性问题产生的根源了。

matlab与c#混合编程的程序,如果要运行于客户的机子,必须在客户端的机子上设置好系统变量,同时需要安装.netframwork与MCR。

.netframwork大家都很熟悉了,任何一个.net设计出来的程序,都不能脱离.netframwork而独立运行,正如用vc++设计的程序离不开MFC一样。这个是必须安装的。独立的.netframwork组件包可以直接去微软的网站上去找。

MCR是由matlab提供的,它和.netframwork的性质相同,任何一个运行matlab的电脑上,都必须安装该组件。该组件在matlab2006a版本中已经分离开而成为一个独立的可运行的.exe文件。它一般是放在//MATLAB/R2006a/toolbox/compiler/deploy/win32文件夹中,名为MCRInstaller.exe。该组件其实是将//MATLAB/R2006a/bin/win32文件夹下的大部分(注意不是全部).dll文件打包而已。这也是为什么有些程序在安装了MCR的机子上仍然不能运行的原因,不过对绝大多数的程序来说,一个MCR就足够了。比较保险的办法是,自行将//MATLAB/R2006a/bin/win32下的所有文件打包成一个安装文件,安装完后设置好系统变量(也就是在class变量下添加上面文件的路径)。

为了让用户安装程序时不需要太多的操作,我们可以把上面2个组件和应用程序一起打包,然后写个脚本检测客户端的机子是否已经安装了上面的2个组件,如果没有,则提示用户安装。检测脚本的写法很多地方都可以找到。这里就不多介绍了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: